解決「Where 子句中的未知欄位」SQL 錯誤
SQL 中可怕的「Where 子句中的未知列」錯誤通常源自於對查詢評估順序的簡單誤解。 SQL 從右向左處理查詢,這表示 WHERE
子句在 子句中定義的 別名被辨識之前進行計算。 SELECT
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE user_name = "john";</code>此查詢嘗試使用別名
過濾結果,但資料庫在user_name
評估 子句後遇到此別名 。由於 WHERE
不是 user_name
表中的列,因此會觸發錯誤。 users
解:優先考慮列引用
有兩種簡單的方法可以解決此問題:
WHERE
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>這可確保資料庫使用正確標識的列進行過濾。
SELECT
子句求值之前強制解析別名:WHERE
<code class="language-sql">SELECT (u_name) AS user_name FROM users WHERE user_name = "john";</code>雖然有效,但與使用原始列名稱相比,這種方法的可讀性較差,並且通常不太受歡迎。
透過了解評估順序並採用其中一種解決方案,可以有效預防和解決「Unknown Column inWhere Clause」錯誤。
以上是為什麼我的 SQL 查詢會拋出「Where 子句中的未知列」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!