MySQL Query: Как выбрать строки, которые не имеют определенного значения? - PullRequest
6 голосов
/ 10 мая 2010

У меня проблемы с написанием запроса, и я даже не знаю, возможно ли это. Возьмите эту таблицу, например:

id   group  active  

1    A      NO  
2    A      YES  
3    A      NO  

4    B      YES  
5    B      NO  

6    C      NO  
7    C      NO  

Таблица выше является лишь примером. В реальной таблице эти столбцы гораздо больше, так что имейте это в виду. Мне нужен способ выбрать только имена групп, у которых нет активной строки. В этом случае обе группы «A» и «B» имеют хотя бы одну строку с «active» = «YES», но если вы посмотрите на C, активных строк нет. Единственное, что мне нужно в результате - это значение столбца группы (в данном случае «C»), а не вся строка.

Возможно ли это?

Ответы [ 2 ]

7 голосов
/ 10 мая 2010
SELECT DISTINCT group FROM table WHERE group NOT IN
    (SELECT DISTINCT group FROM table WHERE active = 'YES')
1 голос
/ 10 мая 2010

Сначала вы хотите получить все группы, которые хотите исключить, а затем используйте предложение NOT IN, чтобы вернуть все остальные группы, которых нет в этом списке.

SELECT DISTINCT t.group 
FROM table t
WHERE t.group NOT IN 
    (SELECT DISTINCT t.group 
     FROM table t 
     WHERE t.active='YES');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...