MySQL查询;如果大于值'是'否则'否';分组

时间:2011-03-12 00:24:10

标签: mysql filter

我在表格中有这些数据:

id  account status
1      8       1
2      8       4
4      8       3
5      8       1
6      1       4
7      1       3

我想要一个查询向我返回帐号,如果该帐户的任何状态为< 3 ,则返回'是'否则为'否'。所以,这些结果:

account pending
8          'Yes'
1          'No'

我有:

SELECT account, IF(status>2,'No','Yes') as pending FROM table GROUP BY account;

但它似乎只考虑了每个帐户的第一行。 (例如,id 1的状态= 1,所以即使id 4的状态发生了变化,因此状态= 1,它仍然认为所有状态都大于2。)

我非常感谢任何帮助。我通常可以做正确的查询设计,但这给了我一个大脑抽筋。 :)

2 个答案:

答案 0 :(得分:14)

    SELECT account, IF(max(status)>2,'No','Yes') as pending 
FROM table 
GROUP BY account

答案 1 :(得分:0)

尝试使用aggregate function,例如BIT_OR:

SELECT account, IF(BIT_OR(status>2),'No','Yes') as pending FROM table GROUP BY account;