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

如何查询同一表中Reference_number 48值大于54的Shop_number记录

解决方案:查询满足特定条件的店铺编号

针对你的需求,这里提供两种可行的SQL实现方式,分别对应你提到的自连接和HAVING子句思路:

方法一:自连接实现

通过将表自身关联,把同一店铺的两条记录(Reference_number分别为48和54)配对,直接比较对应Value的大小:

SELECT d48.Shop_number
FROM Details d48
JOIN Details d54 ON d48.Shop_number = d54.Shop_number
WHERE d48.Reference_number = 48
  AND d54.Reference_number = 54
  AND d48.Value > d54.Value;

逻辑说明:

  • 给表起两个别名d48和d54,分别代表筛选出Reference_number=48和54的子数据集
  • 通过Shop_number将两个数据集关联,确保是同一店铺的记录
  • 最后直接比较两个Value,保留满足d48.Value > d54.Value的店铺编号

方法二:条件聚合 + HAVING子句

利用分组和条件聚合函数,在分组后计算每个店铺对应两个Reference_number的Value,再用HAVING筛选符合条件的结果:

SELECT Shop_number
FROM Details
WHERE Reference_number IN (48, 54) -- 仅保留需要的记录,优化查询效率
GROUP BY Shop_number
HAVING MAX(CASE WHEN Reference_number = 48 THEN Value END) > MAX(CASE WHEN Reference_number = 54 THEN Value END);

逻辑说明:

  • 先过滤出Reference_number为48或54的记录,减少后续分组计算的数据量
  • 按Shop_number分组,每个组对应一个店铺的两条目标记录
  • 用CASE WHEN分别提取每个店铺对应48和54的Value,通过MAX函数取出该值(因为每个店铺对应每个Reference_number只有一条记录,MAX等价于直接取值)
  • 在HAVING子句中比较两个值的大小,筛选出符合条件的店铺编号

两种方法都能得到你期望的结果(222223和222224),可以根据实际数据量和表结构选择:自连接逻辑更直观,条件聚合则在需要同时计算多个类似指标时更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:55:25