PostgreSQL の DELETE クエリに列が存在しません
PostgreSQL では、「WHERE IN」句を使用して DELETE クエリを実行する場合は特別な注意が必要です。他の SQL 言語に慣れているために起こりやすい間違いは、文字列定数に二重引用符を使用することです。
この例では、クエリは 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" );
ただし、PostgreSQL では二重引用符は特別な意味を持ちます。これらはテーブル名と列名をエスケープするために使用されます。その結果、クエリは失敗し、「c836d018-1d12-4507-a268-a4d80d6d3f54」という名前の列が存在しないというエラーが表示されます。
クエリを修正するには、二重引用符を一重引用符に置き換えてください。文字列定数の場合:
DELETE FROM user_job_titles WHERE id IN ('c836d018-1d12-4507-a268-a4d80d6d3f54', 'd0961a90-7d31-4c4c-9c1b-671115e3d833', '62dda420-6e62-4017-b41d-205c0aa82ead' );
二重引用符が使用されることに注意してくださいPostgreSQL ではテーブル名と列名を囲むためだけに使用されますが、文字列リテラルには一重引用符が使用されます。 SQL クエリを正しく実行するには、正しい引用符の種類を使用することが重要です。
以上がPostgreSQL の DELETE クエリが「列が存在しません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。