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

多表查询求助:筛选priceeach<100的SQL结果不符合预期

SQL查询结果不符合预期的问题排查与修复

你的SQL逻辑存在漏洞:子查询仅筛选出存在至少一条priceeach<100记录的productcode,但当通过该productcode关联orderdetails表时,会返回该产品的所有订单明细——哪怕其中包含priceeach>=100的记录,这就是结果出现不符合条件数据的原因。

修复方案1:直接过滤(最简洁高效)

直接在关联后通过WHERE子句过滤当前明细的priceeach,确保只返回符合条件的记录:

select p.productcode, p.productname, p.msrp, od.priceeach
from products as p 
join orderdetails as od on p.productcode = od.productcode
where od.priceeach < 100

修复方案2:关联子查询(仅作逻辑演示,不推荐)

如果一定要基于子查询逻辑调整,可改成关联子查询,确保每条返回的明细自身满足条件:

select p.productcode, p.productname, p.msrp, od.priceeach
from products as p 
join orderdetails as od on p.productcode = od.productcode
where exists (
    select 1 
    from orderdetails od2 
    where od2.productcode = od.productcode 
    and od2.priceeach = od.priceeach 
    and od2.priceeach < 100
)

注:此写法冗余,方案1的执行效率和可读性更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:50:24