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

编写非关联子查询遇报错:子查询返回多个值

问题解决:子查询返回多个值的报错处理

报错原因

你使用的=运算符要求右侧子查询必须返回唯一单个值,但你的子查询SELECT ProductID FROM dbo.OrderDetails WHERE Quantity >= 120查询出了多个符合条件的ProductID,因此触发报错。

解决方案

根据你的需求,有两种常用修复方式:

方式一:使用IN匹配多个值(推荐,符合多数场景需求)

如果需要找出所有存在订单详情数量≥120的产品,用IN替代=,它支持匹配子查询返回的多个值:

SELECT ProductName 
FROM dbo.Products 
WHERE ProductID IN (
    SELECT ProductID 
    FROM dbo.OrderDetails 
    WHERE Quantity >= 120
);

方式二:用聚合函数限制子查询返回单个值

如果只需要匹配子查询中的某一个特定值(比如数量≥120的订单里对应的最大/最小ProductID),可以用聚合函数让子查询返回唯一值:

SELECT ProductName 
FROM dbo.Products 
WHERE ProductID = (
    SELECT MAX(ProductID)  -- 替换为MIN(ProductID)可获取最小ID的产品
    FROM dbo.OrderDetails 
    WHERE Quantity >= 120
);

内容的提问来源于stack exchange,提问作者Nathan Murray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:54:20