MySQL запрос; если больше значения «да», иначе «нет»; группировка - PullRequest
5 голосов
/ 12 марта 2011

У меня есть эти данные в таблице:

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

Я хочу, чтобы один запрос вернул мне номер учетной записи, и если какой-либо из статусов 'для этой учетной записи равен <3 </strong>, то верните' Да ', в противном случае' Нет '. Итак, эти результаты:

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 ]

14 голосов
/ 12 марта 2011
    SELECT account, IF(max(status)>2,'No','Yes') as pending 
FROM table 
GROUP BY account
0 голосов
/ 12 марта 2011

Попробуйте использовать агрегатную функцию , например, BIT_OR:

SELECT account, IF(BIT_OR(status>2),'No','Yes') as pending FROM table GROUP BY account; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...