首頁 >資料庫 >mysql教程 >Postgres 與 SQL Server:為什麼我的「WHERE IN (list)」查詢因無效的列引用而失敗?

Postgres 與 SQL Server:為什麼我的「WHERE IN (list)」查詢因無效的列引用而失敗?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-01 02:13:09218瀏覽

Postgres vs. SQL Server: Why Does My

Postgres: "where in (list)" - 無效的列引用

在SQL Server 中,以下查詢將成功從基於ID列表的user_job_titles表:

DELETE FROM user_job_titles WHERE id IN (
"c836d018-1d12-4507-a268-a4d80d6d3f54",
"d0961a90-7d31-4c4c-9c1b-671115e3d833",
"62dda420-6e62-4017-b41d-205c0aa82ead"
)

但是,當嘗試時在Postgres 中執行此查詢時,會發生錯誤:

ERROR: column "c836d018-1d12-4507-a268-a4d80d6d3f54" does not exist

原因:

問題在於IN 中的ID 值使用雙引號條款。在 Postgres 中,雙引號被保留作為表名和列名的轉義字元。透過在 ID 周圍使用它們,Postgres 將它們解釋為對不存在列的引用,從而導致錯誤。

解決方案:

要解決此問題,請將雙引號和單引號:

DELETE FROM user_job_titles
    WHERE id IN ('c836d018-1d12-4507-a268-a4d80d6d3f54',
                 'd0961a90-7d31-4c4c-9c1b-671115e3d833',
                 '62dda420-6e62-4017-b41d-205c0aa82ead'
                );

透過使用單引號,ID 被解釋為字串常數,允許IN子句才能正確運作。

以上是Postgres 與 SQL Server:為什麼我的「WHERE IN (list)」查詢因無效的列引用而失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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