Wir können die HAVING-Klausel in der SQL-Abfrage verwenden, um Gruppen von Zeilen zu filtern. Wenn wir die GROUP BY-Klausel verwenden, funktioniert dies direkt auf diese Weise.Wie funktioniert die HAVING-Klausel wirklich?
Aber, lassen Sie uns auf diese Frage suchen:
select 1 where 1!=1 having count(*)=0;
(oder hängen Sie ihn mit 'von Dual' für Oracle).
Wenn HAVING wirklich Gruppenfilterung macht, nach WHERE haben wir keine Zeilen, also haben wir keine Gruppe und das Ergebnis muss 'Keine Zeile ausgewählt' sein.
Aber in PostgreSQL, MySQL und Oracle erhalten wir '1' als Ergebnis der Abfrage.
Frage: Wie funktioniert HAVING wirklich?
SQL Fiddle für den Test: http://www.sqlfiddle.com/#!15/d5407/51
Dumme Weise zu erkennen, ob eine Tabelle 0 Zeilen hat oder nicht ... – jarlh
WHERE Rückkehr 0 Zeilen, also haben wir 0 Gruppen von Zeilen.Wenn HAVING nur die Gruppenfiltration filtert, warum wird dann gestartet und eine Auswertung für die leere Eingabe durchgeführt? – potapuff