2010-05-10 2 views
6

У меня возникли проблемы с записью запроса, и я даже не знаю, возможно ли это. Возьмите этот стол, например:MySQL Query: как выбрать строки, которые не имеют определенного значения?

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» имеют по крайней мере одну строку с «активным» = «YES», но если вы посмотрите на C, активных строк нет. Единственное, что мне нужно в результате, это значение столбца группы (в данном случае «C») не целая строка.

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

ответ

7
SELECT DISTINCT group FROM table WHERE group NOT IN 
    (SELECT DISTINCT group FROM table WHERE active = 'YES') 
+0

Это прекрасно работает. Спасибо. – Srka

1

Вы сначала хотите, чтобы все группы, которые вы хотите исключить, а затем использовать предложение 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'); 
+0

Это почти как один данбен, и я полагаю, он тоже сработает. – Srka

Смежные вопросы