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句。 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 (リスト)」クエリが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。