You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EXIST与ANY的SQL语句问题求助:改写后的语句为何报错?

问题原因及解决办法

核心问题:列名大小写不匹配

看你原语句里的关联条件是Products.SupplierID = Suppliers.supplierID,这里Suppliers表的供应商ID列名是小写s开头的supplierID,但改写后的语句里写的是WHERE SupplierID = ANY(...)。如果你的数据库是区分大小写的(比如PostgreSQL默认开启大小写敏感,或者表列名创建时用双引号限定过),那么SupplierID(大写S开头)和supplierID(小写s开头)会被识别成两个不同的列,数据库找不到SupplierID列就会直接报错。

语法兼容性优化建议

虽然标准SQL中= ANY(子查询)和IN(子查询)逻辑等价,但部分数据库对ANY的语法支持有细节限制,用IN替代= ANY的写法兼容性更好,也更直观:

修正后的两种可用写法

写法一:修正列名大小写的= ANY版本

SELECT SupplierName
FROM Suppliers
WHERE supplierID = ANY (SELECT SupplierID FROM Products 
                        WHERE Price < 20);

写法二:更通用的IN版本

SELECT SupplierName
FROM Suppliers
WHERE supplierID IN (SELECT SupplierID FROM Products 
                     WHERE Price < 20);

内容的提问来源于stack exchange,提问作者Xingui Li

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:57:03