2017-07-11 1 views
1

Ich möchte eine Spalte in einer Tabelle überprüfen, wenn sie den gleichen Wert haben.Wie überprüfe ich eine Spalte in einer Zeile, wenn sie denselben Wert hat?

ID School_Name  Student Status 
1  Virginia  Alex   2 
2  Virginia  John   2 
3  Wonderbow  Devi   1 
4  San Antonio  Lucas   1 
5  San Antonio  Larsa   2 

Wie die Spalte status zu überprüfen, ob der Wert 2 für jeden School_Name ist. Der Ausgang ist etwas, was wie folgt aus:

ID  School_Name school_stat 
1   Virginia  TRUE  
2   Wonderbow  FALSE 
3  San Antonio  FALSE 

Also, wenn alle Schüler in jeder Schule Namen, den Status von 2 hat, ist das Ergebnis TRUE.

Aktuelle Abfrage:

SELECT *,SUM(case when status > 1 then TRUE else FALSE end) as school_stat from t_school

Die Abfrage obwohl falsche Ausgabe geben.

Antwort

0

Sie können bedingte Aggregation verwenden:

SELECT 
    School_Name, 
    IF(COUNT(1) = COUNT(IF(Status = 2, 1, NULL)), 'TRUE', 'FALSE') school_stat 
FROM t_school 
GROUP BY School_Name 

Siehe demo in SQLFiddle, und wenn Sie einige Aggregation Dinge, nicht-Aggregation Spalte wie id tun wollen keinen Sinn in ausgewählten machen.

+0

Vielen Dank. Übrigens, was ist 'COUNT (1)'? – ashura91

+0

@ ashura91 dasselbe Ergebnis mit 'count (*)'. Auch Sie können es googeln. – Blank

0

Verwenden group by Klausel für die Gruppe Ihre school_name.

Beispiel,

SELECT ID,School_Name,(case when status > 1 then 'TRUE' else 'FALSE' end) as school_stat from temp1 
group by School_Name 
order by ID asc; 

Siehe demo.

Verwandte Themen