2010-05-10 6 views
6

Ich habe Probleme beim Schreiben einer Abfrage und ich weiß nicht einmal, ob es möglich ist. Nehmen Sie diese Tabelle zum Beispiel:MySQL Query: Wie wählt man Zeilen, die keinen bestimmten Wert haben?

id group active 

1 A  NO 
2 A  YES 
3 A  NO 

4 B  YES 
5 B  NO 

6 C  NO 
7 C  NO 

Tabelle oben ist nur ein Beispiel. In der realen Tabelle gibt es viel mehr Spalten, die diese Bäume im Hinterkopf haben. Was ich brauche, ist eine Möglichkeit, nur Gruppennamen auszuwählen, die keine aktive Zeile haben. In diesem Fall haben beide Gruppen "A" und "B" mindestens eine Zeile mit "active" = "YES", aber wenn Sie C betrachten, gibt es keine aktiven Zeilen. Die einzige Sache, die ich als Ergebnis benötigen würde, ist ein Gruppenspaltenwert (in diesem Fall "C") nicht die ganze Reihe.

Ist das möglich?

Antwort

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

Das hat gut funktioniert. Vielen Dank. – Srka

1

Sie wollen zunächst alle Gruppen, die Sie erhalten möchten auszuschließen, und verwenden Sie dann die NOT IN Klausel alle anderen Gruppen zurück nicht in dieser Liste.

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

Das ist fast wie das, was ich gepostet habe, also denke ich, dass es auch funktionieren wird. – Srka

Verwandte Themen