SQL 查詢錯誤「列不存在」的檢查
執行 SQL 查詢時,可能會遇到「列不存在」的錯誤。當該列似乎存在於表的定義中時,這尤其令人費解。
範例場景
考慮以下查詢:
<code class="language-sql">select sim.id as idsim, num.id as idnum from main_sim sim left join main_number num on (FK_Numbers_id=num.id);</code>
此查詢嘗試根據 FK_Numbers_id 外鍵關係從兩個表 main_sim 和 main_number 中檢索資料。但是,執行查詢時,會收到以下錯誤:
<code>ERROR: column "fk_numbers_id" does not exist</code>
解
使用指令 d main_sim
檢查表定義後,您會注意到該列存在,名稱為 FK_Numbers_id,而不是查詢中指定的 fk_numbers_id。
<code class="language-sql">dbMobile=# \d main_sim ... FK_Numbers_id | integer | </code>
解釋
在這種情況下,由於表定義使用雙引號,因此列名稱區分大小寫。因此,查詢中的列引用也必須使用雙引號才能與列名稱的精確大小寫相符。
更正後的查詢
要解決此問題,請修改查詢如下:
<code class="language-sql">select sim.id as idsim, num.id as idnum from main_sim sim left join main_number num on ("FK_Numbers_id" = num.id);</code>
此更正後的查詢在 LEFT JOIN 子句中使用雙引號括起列名,確保與表定義正確匹配。透過調整列引用以符合列名稱的精確大小寫,查詢現在將成功執行。
以上是為什麼即使列存在,我的 SQL 查詢也會失敗並出現「列不存在」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!