内部联接仅返回第一个匹配的行

时间:2014-04-16 15:58:29

标签: mysql sql select join inner-join

我在网站的任何地方和谷歌上都找不到我找到的答案,我有2个表格,每个表格都有特定的信息,报告给出了重复数据 我需要获取名称,反馈ID和最多包含1个反馈ID的网站。

这是我的2张桌子

表:反馈

userID              | ID 
john.smith          |1
george.wilson       |2
justin.example      |3
justin.example      |4
juliana.something   |5
george.wilson       |6

表:用户(此表中的其他信息说明了重复的原因)

UserID              |Site
george.wilson       |location 1
george.wilson       |location 1
george.wilson       |location 1
john.smith          |Location 2
john.smith          |Location 2
juliana.something   |Location 3
justin.example      |Location 4
justin.example      |Location 4

当前查询

SELECT feedback.userID,  feedback.id, Users.Site        
FROM feedback       
INNER JOIN users ON     
feedback.userID = users.userid      
WHERE feedback.userID <> 'x'

当前结果

UserID              |ID | Sites
john.smith          |1  |Location 2
john.smith          |1  |Location 2
george.wilson       |2  |location 1
george.wilson       |2  |location 1
george.wilson       |2  |location 1
justin.example      |3  |Location 4
justin.example      |3  |Location 4
justin.example      |4  |Location 4
justin.example      |4  |Location 4
juliana.something   |5  |Location 3
george.wilson       |6  |location 1
george.wilson       |6  |location 1
george.wilson       |6  |location 1

预期结果

UserID              |ID | Sites
john.smith          |1  |Location 2
george.wilson       |2  |location 1
justin.example      |3  |Location 4
justin.example      |4  |Location 4
juliana.something   |5  |Location 3
george.wilson       |6  |location 1

我的查询已经最小化,需要更多内容,但错误来自我的“内部联接”用户,是否可以帮助我解决此问题? (我正在使用My Sql Workbench 6.0) 提前谢谢你!

2 个答案:

答案 0 :(得分:1)

您可以使用users的{​​{1}}子句加入feedback表,以限制行的数量:

limit

答案 1 :(得分:0)

问题是重复的数据。 SQL不知道或不关心它为什么在表中被复制,它只是准确地返回与您的查询匹配的所有内容。这是一个非常简单的查询,所以只需添加DISTINCT就可以消除重复的行而不需要任何额外的奇怪连接。

SELECT DISTINCT feedback.userID,  feedback.id, users.Site
FROM feedback, users
WHERE feedback.userID = users.userid      
AND feedback.userID <> 'x'