Heim >Datenbank >MySQL-Tutorial >Kann ich berechnete Aliase in SQL-WHERE-Klauseln verwenden?
Verwendung berechneter Aliase in SQL-WHERE-Klauseln
Bei der Verwendung berechneter Aliase in SQL ist es wichtig, die Einschränkungen ihrer Verwendung in der WHERE-Klausel zu verstehen. Wie in der folgenden Abfrage gezeigt:
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE BalanceDue > 0 --错误</code>
Berechneter WertBalanceDue
als Alias kann nicht direkt in der WHERE-Klausel verwendet werden. Es gibt jedoch Möglichkeiten, die gewünschten Ergebnisse zu erzielen.
Eine Möglichkeit besteht darin, eine abgeleitete Tabelle zu verwenden:
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS x WHERE BalanceDue > 0;</code>
Alternativ kann die Berechnung in der WHERE-Klausel wiederholt werden:
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
In den meisten Fällen wird der Einfachheit halber empfohlen, Ausdrücke in der WHERE-Klausel zu wiederholen.
Bedenken Sie, dass die übermäßige Verwendung berechneter Aliase in komplexen Abfragen zu Leistungsproblemen führen kann. Erwägen Sie in diesem Fall die Erstellung einer berechneten Spalte oder die Beibehaltung der Ergebnisse für einen schnelleren Zugriff.
Interessanterweise optimiert SQL Server im gegebenen Beispiel die Abfrage so, dass die Berechnung nur einmal durchgeführt wird, unabhängig davon, wie auf den Alias verwiesen wird. Bei der Arbeit mit komplexeren Abfragen ist es jedoch wichtig, die möglichen Auswirkungen auf die Leistung zu verstehen.
Das obige ist der detaillierte Inhalt vonKann ich berechnete Aliase in SQL-WHERE-Klauseln verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!