Summe Spalten in mysql verwenden Sie dann das Ergebnis in der where-Klausel
Ich möchte in der Lage sein, dies zu tun:
SELECT dept.id, (invoices.col1 + invoices.col2 + invoices.col3) as sumTotal
FROM dept
INNER JOIN invoices ON invoices.id_dept = dept.id
WHERE sumTotal > 10000
Aber ich bin immer eine unbekannte Spalte mit "sumTotal".
Ist das möglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
HAVING
:Das problem ist, dass die
WHERE
Klausel ist ausgeführt vor derSELECT
- Anweisung. Daher diesumTotal
Spalte ist noch nicht verfügbar.Den
HAVING
Klausel ist ausgeführt nach derSELECT
- Anweisung. Es Arten von filtern Sie die Ergebnisse, nachdem Sie alles ausgewählt. Bedenken Sie, obwohl, weil, dass mitHAVING
ist langsamer. Es arbeitet auf die ganze Reihe von Zeilen.Aus der MySQL-Dokumentation:
Oder verwenden Sie, WO...
Können Sie auch versuchen, diese:
Müssen Sie "haben" -
Ich bin mir nicht sicher, ob Sie mit Ihrer alias-Feld oder, ob Sie schreiben, " dass (die Rechnungen.col1 + Rechnungen.col2 + Rechnungen.col3) > 10000.
Dem 'wo' - Anweisung funktioniert in Verbindung mit der 'select': es filtert die Datensätze werden zunächst zurückgegeben. Das "haben", dann Filter, die zurückgegebene dataset, normalerweise, weil die "haben" Zustand nicht bekannt ist, wenn der 'select'.
Zitieren eine Dokumentation " Die HAVING-Klausel wurde Hinzugefügt, um SQL-weil die WHERE-Schlüsselwort nicht verwendet werden konnte, mit Aggregat-Funktionen.' Woanders wird geschrieben 'Das SQL HAVING-Klausel verwendet wird, in Kombination mit der SQL-Klausel GROUP BY. Es kann verwendet werden in einer SQL-SELECT-Anweisung zum filtern der Datensätze, die von einem SQL GROUP BY gibt.'