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中文网其他相关文章!