SQL WHERE 子句與計算別名:常見問題
SQL 允許在 SELECT
語句中建立計算別名。 但是,在 WHERE
子句中直接引用這些別名通常會導致錯誤。在處理複雜的計算時,此限制可能會出現問題。
有效的解
有幾種方法可以規避此限制:
使用子查詢:
將計算嵌套在子查詢中,為計算的別名分配一個名稱。 然後,在外部查詢的 WHERE
子句中引用此名稱。
範例:
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS x WHERE BalanceDue > 0;</code>
重複計算:
WHERE
子句中複製計算。 <code class="language-sql"> SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
效能影響
雖然子查詢很簡單,但它們可能會導致效能下降。 相反,WHERE
子句中重複複雜的計算也會對效能產生負面影響。
最優策略
對於簡單的計算,重複計算通常效率更高。 對於複雜的計算,建議建立持久計算列。這個預先計算的欄位避免了冗餘計算並確保跨查詢的資料一致性。
以上是為什麼我不能在 SQL WHERE 子句中使用計算別名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!