如何使用GROUP BY获取与组关联的所有用户并键入

时间:2011-10-09 13:34:09

标签: mysql group-by

我有一个包含用户名,用户组和用户类型的表。

A 0 0
B 0 1
C 1 2
D 2 2

现在我想要像

这样的东西
  

获取组为0或1的所有用户,并键入2

我用:

SELECT * FROM table WHERE usergroup= 0 OR 1 AND usertype=2 GROUP BY usergroup

我希望它会返回用户名C,但奇怪的是它会返回A,C,D 我做错了什么?

3 个答案:

答案 0 :(得分:2)

我将忽略GROUP BY


SELECT * FROM table WHERE usergroup= 0 OR 1 AND usertype=2
     

我做错了什么?

首先,你有优先权问题;您的SQL查询等同于:

SELECT * FROM table WHERE usergroup = 0 OR (1 AND usertype=2)

清楚地使用括号:

SELECT * FROM table WHERE (usergroup = 0 OR 1) AND usertype=2

还有一个问题,因为布尔运算符根本不起作用:0 OR 1是一个计算结果为1的表达式。

你必须重复你要比较的事情:

SELECT * FROM table WHERE (usergroup = 0 OR usergroup = 1) AND usertype=2

然而,这可以缩短:

SELECT * FROM table WHERE usergroup IN (0, 1) AND usertype=2

答案 1 :(得分:1)

你的SQL应该是:

SELECT * 
FROM table 
WHERE (usergroup = 0 OR usergroup = 1) 
  AND (usertype = 2)

为什么你需要'GROUP BY'还不清楚。

答案 2 :(得分:1)

SELECT * FROM table WHERE usergroup IN (0,1) AND usertype = 2