HAVING zuerst Gruppen und filtert dann die Datensätze, während WHERE die Datensätze vor dem Aggregation filtert. Das heißt, es wirkt vor der GROUP BY-Klausel und der HAVING-Klausel und die HAVING-Klausel filtert die Gruppendatensätze nach der Aggregation. Die von
verwendeten -Objekte sind unterschiedlich. Die WHERE-Klausel funktioniert auf Tabellen und Ansichten, und die HAVING-Klausel funktioniert auf Gruppen. WHERE wählt die Eingabezeilen vor der Gruppierungs- und Aggregationsberechnung aus (daher steuert es, welche Zeilen in die Aggregationsberechnung eingehen), während HAVING die gruppierten Zeilen nach der Gruppierung und Aggregation auswählt. Daher kann die WHERE-Klausel keine Aggregatfunktion enthalten, da es keinen Sinn macht, eine Aggregatfunktion zu verwenden, um zu bestimmen, welche Zeilen in die Aggregationsoperation eingegeben werden. Im Gegensatz dazu enthält die HAVING-Klausel immer Aggregatfunktionen. (Genau genommen könnten Sie die HAVING-Klausel auch ohne Aggregation schreiben, aber das wäre Zeitverschwendung. Dieselbe Bedingung könnte in der WHERE-Phase effizienter verwendet werden.) Beispiel: select * from tablename where id > ; 1; und
select * from tablename with id > Es wird nicht empfohlen, have
zu verwenden, um es in zwei Sätzen zusammenzufassen:
Die WHERE-Anweisung kommt vor der GROUPBY-Anweisung; SQL berechnet die WHERE-Anweisung vor der Gruppierung. Die HAVING-Anweisung kommt nach der GROUPBY-Anweisung; SQL berechnet die HAVING-Anweisung nach der Gruppierung.
Das obige ist der detaillierte Inhalt vonVerstehen Sie den Unterschied zwischen where und have in SQL-Anweisungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!