我创建了一个包含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中)。
如果我想退回一次而不是它出现在群组中的次数,我该怎么办?
谢谢。
答案 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)