由JOIN引起的重复

时间:2011-08-10 09:55:36

标签: mysql sql

我创建了一个包含JOIN的简单查询,这个JOIN'使得'一些重复。

表用户:

UserID  Name
------  ----
1       Luis
2       Andre
3       Mark
4       Linda

表bind_groups:

groupID UserID
------- ------
26      1
87      2
87      1
12      4
41      4
6       1
21      2
5       3

SQL查询:

SELECT users.UserID FROM users
    LEFT JOIN bind_groups ON users.UserID = bind_groups.UserID
    WHERE groupID = 26 OR groupID = 87

结果将是:

UserID
------
1
2
1

如您所见,它会返回UserID = 1两次(因为它出现两次,在groupID 26和groupID 87中)。

如果我想退回一次而不是它出现在群组中的次数,我该怎么办?

谢谢。

5 个答案:

答案 0 :(得分:3)

select distinct users.UserID from users ...

也没有必要将它作为左连接,你的where子句使它成为内连接

答案 1 :(得分:2)

使用DISTINCT:

SELECT DISTINCT users.UserID FROM users
    LEFT JOIN bind_groups ON users.UserID = bind_groups.UserID
    WHERE groupID = 26 OR groupID = 87

答案 2 :(得分:2)

尝试将sql修改为:

SELECT DISTINCT users.UserID FROM users
    LEFT JOIN bind_groups ON users.UserID = bind_groups.UserID
    WHERE groupID = 26 OR groupID = 87

答案 3 :(得分:2)

使用group by子句

SELECT users.UserID FROM users
    LEFT JOIN bind_groups ON users.UserID = bind_groups.UserID
    WHERE groupID = 26 OR groupID = 87
GROUP BY UserID

答案 4 :(得分:2)

DISTINCT很明确,但根据表格大小,使用IN非常有用:

SELECT DISTINCT users.UserID FROM users
    JOIN bind_groups ON users.UserID = bind_groups.UserID
    WHERE groupID IN(26, 87)