ホームページ > データベース > mysql チュートリアル > PostgreSQL の DELETE クエリが「列が存在しません」というメッセージで失敗するのはなぜですか?

PostgreSQL の DELETE クエリが「列が存在しません」というメッセージで失敗するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-18 00:29:08
オリジナル
651 人が閲覧しました

Why Does My PostgreSQL DELETE Query Fail with

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート