MySQL выбирает только определенную строку

У меня есть эта странная проблема. По какой-то причине выбран только определенный ряд. у меня есть это user_data Таблица:
введите описание изображения здесь

а также website_name Таблица
введите описание изображения здесь

По какой-то причине с этой командой используется идентификатор пользователя 13 оно работает:

введите описание изображения здесь

но используя идентификатор пользователя 27 это не так, но вы можете видеть, что я добавляю # 27 в email_id ряд gumblar.cn.

введите описание изображения здесь

Почему не работает с идентификатором 27? Я использую эту команду:

SELECT `email_address`, `handset` FROM `website_name` JOIN `user_data` USING ( id ) WHERE `email_id` ='27'

Любая помощь и объяснение приветствуется. Заранее спасибо.

1

Решение

У вас есть совпадение, что id == email_id для 13, вам нужно изменить

USING ( id )

в

ON (website_name.email_id = user_data.id)

РЕДАКТИРОВАТЬ:

В вашей таблице вы видите строку:

id | website   |email_id
---+-----------+--------
13 | yahoo.com | 13

Вы видите, что идентификатор совпадает с email_id? Это просто совпадение, и именно поэтому оно сработало для этого числа (вы присоединяетесь к id, который просто совпадает с email_id, к которому вы ДОЛЖНЫ присоединиться).

Ваш SQL должен выглядеть так:

 SELECT `email_address`, `handset`
FROM `website_name`
JOIN `user_data` ON (website_name.email_id = user_data.id)
WHERE `email_id` ='27';
4

Другие решения

Обе ваши таблицы содержат поле id — но, очевидно, они идентифицируют разные вещи (электронные письма и веб-сайты, соответственно). Вот почему ваш JOIN не может использовать id поле для получения разумных результатов (то, что оно работало в течение 13 лет, является лишь случайным, а результат запроса не имеет смысла). Вам нужно использовать

JOIN user_data ON website_name.email_id = user_data.id

Другой подход будет переименовать id поля для email_id а также website_id, Затем вы можете использовать JOIN user_data USING(email_id),

2

Вы присоединяетесь с идентификатором 18, и ни один из ваших пользователей не имеет идентификатора 18.

Вы должны присоединиться к нему с заявлением на:

join user_data on user_data.id = website_name.email_id
2
По вопросам рекламы [email protected]