Mysql
 sql >> Datenbank >  >> RDS >> Mysql

WO vs HABEN

Warum müssen Sie selbst erstellte Spalten (z. B. "1 als Zahl auswählen") nach HAVING und nicht WHERE in MySQL platzieren?

WHERE wird vor GROUP BY angewendet , HAVING wird danach angewendet (und kann nach Aggregaten filtern).

Im Allgemeinen können Sie in keiner dieser Klauseln auf Aliase verweisen, aber auf MySQL ermöglicht die Referenzierung von SELECT Ebenenaliase in GROUP BY , ORDER BY und HAVING .

Und gibt es irgendwelche Nachteile, anstatt "WHERE 1" zu machen (die ganze Definition statt eines Spaltennamens zu schreiben)

Wenn Ihr berechneter Ausdruck keine Aggregate enthält, fügen Sie ihn in WHERE ein -Klausel wird höchstwahrscheinlich effizienter sein.