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中文網其他相關文章!