多个IN()使用mysql 5.1检查连接表

时间:2011-04-19 13:55:22

标签: mysql join

我有一个包含用户数据的表和一个m:n关系表,用于分配给不同的组。要过滤属于组1和组2的所有用户,我编写了以下SQL:

SELECT * 
FROM user AS u
LEFT JOIN user_groups AS g ON g.uid = u.uid
WHERE 1 IN (g.gid) AND 2 IN (g.gid)

不幸的是这句话不起作用。结果是空的,但是两个组中都有用户。当我第二次加入user_groups时,它可以工作:

SELECT * 
FROM user AS u
LEFT JOIN user_groups AS g ON g.uid = u.uid
LEFT JOIN user_groups AS g2 ON g2.uid = u.uid
WHERE 1 IN (g.gid) AND 2 IN (g2.gid)

有人可以向我解释,第一个陈述有什么问题吗? 如果有人能告诉我,如何通过一次加入来解决这个问题,那将是很好的,因为我必须检查不同数量的组。

提前谢谢你, 皮特

1 个答案:

答案 0 :(得分:0)

在您的第一个查询中尝试将OR替换为OR。列gid不能同时为1和2。