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

IN (リスト) を使用すると、PostgreSQL の DELETE クエリが「列が存在しません」というメッセージで失敗するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-17 02:59:25
オリジナル
259 人が閲覧しました

Why Does My PostgreSQL DELETE Query Fail with

Postgres: WHERE IN (リスト)

でのクエリ エラー「列が存在しません」PostgreSQL では、クエリ

DELETE FROM user_job_titles WHERE id IN (
"c836d018-1d12-4507-a268-a4d80d6d3f54",
"d0961a90-7d31-4c4c-9c1b-671115e3d833",
"62dda420-6e62-4017-b41d-205c0aa82ead"
)
ログイン後にコピー

が失敗します。 「エラー: 列 [値] が存在しません」エラー。これは次の理由によるものです。

二重引用符とエスケープ

PostgreSQL では、二重引用符はテーブル名と列名を参照するエスケープ文字として使用されます。文字列リテラルを誤って使用すると、構文が正しくなくなる可能性があります。指定されたクエリでは、IN リストの値が二重引用符で囲まれているため、PostgreSQL は値を文字列定数ではなく列名として解釈します。

解決策: 値を一重引用符で囲みます

To問題を解決するには、値を一重引用符で囲みます。

DELETE FROM user_job_titles WHERE id IN (
'c836d018-1d12-4507-a268-a4d80d6d3f54',
'd0961a90-7d31-4c4c-9c1b-671115e3d833',
'62dda420-6e62-4017-b41d-205c0aa82ead'
);
ログイン後にコピー

このように、PostgreSQL は値を文字列定数として解釈し、これらを user_job_titles テーブルの id 列と正しく比較します。

以上がIN (リスト) を使用すると、PostgreSQL の DELETE クエリが「列が存在しません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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