理解「Where 子句中的未知欄位」SQL 錯誤
可怕的「Where 子句中的未知列」錯誤是由 SQL 語句中的特定執行順序引起的。 SQL 從右向左處理查詢,這表示 WHERE
子句在 SELECT
子句之前計算。
我們舉個例子來說明:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE user_name = "john";</code>
此處,WHERE
子句嘗試使用 user_name
進行過濾。但是,別名 user_name
僅在 SELECT
子句中定義。 因為先處理WHERE
子句,還沒有遇到這個別名,導致「未知列」錯誤。
解:
有兩種簡單的方法可以解決此問題:
在WHERE
子句中使用原始列名:這是最簡單、最有效的解決方案。 依其實際名稱而非別名引用該列:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>
將別名列括在括號中: 此方法強制資料庫在 評估 子句之前解析別名 WHERE
。 雖然有效,但它通常比使用原始列名稱效率低:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE (user_name = "john");</code>
透過了解 SQL 的求值順序並採用其中一個解決方案,您可以有效解決「Where 子句中的未知列」錯誤。
以上是為什麼我的 SQL 查詢會傳回「Where 子句中的未知列」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!