首页 > 数据库 > mysql教程 > Postgres 与 SQL Server:为什么我的'WHERE IN (list)”查询因无效的列引用而失败?

Postgres 与 SQL Server:为什么我的'WHERE IN (list)”查询因无效的列引用而失败?

Mary-Kate Olsen
发布: 2025-01-01 02:13:09
原创
177 人浏览过

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 中的 ID 值使用双引号条款。在 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 (list)”查询因无效的列引用而失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板