首頁 >資料庫 >mysql教程 >為什麼我的 SQL 查詢會傳回「Where 子句中的未知列」?

為什麼我的 SQL 查詢會傳回「Where 子句中的未知列」?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-17 16:06:14332瀏覽

Why Does My SQL Query Return

理解「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子句,還沒有遇到這個別名,導致「未知列」錯誤。

解:

有兩種簡單的方法可以解決此問題:

  1. WHERE子句中使用原始列名:這是最簡單、最有效的解決方案。 依其實際名稱而非別名引用該列:

    <code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>
  2. 將別名列括在括號中: 此方法強制資料庫在 評估 子句之前解析別名 WHERE。 雖然有效,但它通常比使用原始列名稱效率低:

    <code class="language-sql">SELECT u_name AS user_name FROM users WHERE (user_name = "john");</code>

透過了解 SQL 的求值順序並採用其中一個解決方案,您可以有效解決「Where 子句中的未知列」錯誤。

以上是為什麼我的 SQL 查詢會傳回「Where 子句中的未知列」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn