ホームページ > データベース > mysql チュートリアル > Postgres と SQL Server: 無効な列参照により「WHERE IN (リスト)」クエリが失敗するのはなぜですか?

Postgres と SQL Server: 無効な列参照により「WHERE IN (リスト)」クエリが失敗するのはなぜですか?

Mary-Kate Olsen
リリース: 2025-01-01 02:13:09
オリジナル
176 人が閲覧しました

Postgres vs. SQL Server: Why Does My

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

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