SQL WHERE-Klausel und berechnete Aliase: Ein häufiges Problem
SQL ermöglicht die Erstellung berechneter Aliase innerhalb von SELECT
-Anweisungen. Der direkte Verweis auf diese Aliase in der WHERE
-Klausel führt jedoch häufig zu einem Fehler. Diese Einschränkung kann bei der Arbeit mit komplizierten Berechnungen problematisch sein.
Effektive Lösungen
Mehrere Ansätze umgehen diese Einschränkung:
Einsatz von Unterabfragen:
Verschachteln Sie die Berechnung in einer Unterabfrage und weisen Sie dem berechneten Alias einen Namen zu. Verweisen Sie dann auf diesen Namen in der WHERE
-Klausel der äußeren Abfrage.
Anschauliches Beispiel:
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS x WHERE BalanceDue > 0;</code>
Wiederholung der Berechnung:
WHERE
-Klausel.<code class="language-sql"> SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
Auswirkungen auf die Leistung
Obwohl Unterabfragen unkompliziert sind, können sie zu Leistungseinbußen führen. Umgekehrt können sich wiederholt komplexe Berechnungen innerhalb der WHERE
-Klausel auch negativ auf die Leistung auswirken.
Optimale Strategie
Bei einfachen Berechnungen ist es im Allgemeinen effizienter, die Berechnung zu wiederholen. Für komplexe Berechnungen wird die Erstellung einer persistenten berechneten Spalte empfohlen. Diese vorberechnete Spalte vermeidet redundante Berechnungen und stellt die Datenkonsistenz über alle Abfragen hinweg sicher.
Das obige ist der detaillierte Inhalt vonWarum kann ich in meiner SQL-WHERE-Klausel keinen berechneten Alias verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!