我有这个奇怪的问题。由于某种原因,仅选择某一行。我有这个user_data
表:
和website_name
表
出于某种原因,使用用户ID为13
的此命令可以正常工作:
但使用用户ID 27
却没有,但你可以看到我在email_id
行gumblar.cn中添加#27。
为什么它不适用于id 27?我正在使用这个命令:
SELECT `email_address`, `handset` FROM `website_name` JOIN `user_data` USING ( id ) WHERE `email_id` ='27'
感谢任何帮助和解释。提前谢谢。
答案 0 :(得分:4)
你有一个巧合,即id == email_id为13,你需要改变
USING ( id )
到
ON (website_name.email_id = user_data.id)
编辑:
在表格中,您会看到行:
id | website |email_id
---+-----------+--------
13 | yahoo.com | 13
您是否看到id与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';
答案 1 :(得分:2)
您正在加入ID 18,而非您的用户的ID为18。
您需要使用on语句加入:
join user_data on user_data.id = website_name.email_id
答案 2 :(得分:2)
您的两个表都包含一个字段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)
。