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

SQL关联子查询无结果问题:为何未返回预期数据?

关联子查询返回0条记录的原因解析

你写的关联子查询之所以返回0条记录,核心问题出在**关联条件p2.ProductID = p1.ProductID**上:

关联子查询的逻辑问题

当你在子查询里加上WHERE p2.ProductID = p1.ProductID时,子查询只会统计当前p1行对应的单个产品的价格平均值。因为每个ProductID是唯一的,单个数值的平均值就是它本身,所以子查询返回的结果等于p1.Price。

此时外层的条件p1.Price > 子查询结果就变成了p1.Price > p1.Price,这个条件永远不成立,自然返回0条记录。

非关联子查询的正确逻辑

你的非关联子查询没有加ProductID的过滤条件,子查询计算的是所有产品的平均价格,外层条件p1.Price > 所有产品均价能正常筛选出价格高于整体均价的产品,所以返回25条结果。

拓展:如果要用关联子查询实现同类需求

如果是想实现类似“价格高于同类别产品均价”这类需要关联的逻辑,关联条件应调整为类别字段而非产品ID,示例如下:

SELECT p1.ProductID, p1.Price
FROM PRODUCTS p1
WHERE p1.Price > 
    (SELECT AVG(p2.Price)
    FROM PRODUCTS p2
        WHERE p2.CategoryID = p1.CategoryID);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:07:18