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

如何查询无对应订单的商品?现有SQL查询不生效是什么原因?

问题原因

你编写的查询无法返回正确结果的核心问题是连接类型选择错误,和COUNT计算结果是否为null无关:

  • INNER JOIN只会保留关联双方都存在匹配的记录,从未关联过任何收据的商品,在item表和items_receipts表做INNER JOIN的时候就会被直接过滤,根本不会进入后续的分组统计环节,因此HAVING COUNT(r.id)=0永远匹配不到任何符合要求的商品。
修正方案

将关联逻辑改为LEFT JOIN,保留所有商品记录后再做分组统计即可,修正后的代码如下:

@Query(value="SELECT i.name " +
            "FROM item as i " +
            "LEFT JOIN items_receipts as ir " +
            "    ON i.id = ir.item_id " +
            "LEFT JOIN receipt as r " +
            "    ON ir.receipt_id = r.id " +
            "GROUP BY i.id, i.name " +
            "HAVING COUNT(r.id) = 0"
            ,nativeQuery = true)
List<String> fiveSales();

补充说明:部分SQL方言要求SELECT子句中未使用聚合函数的字段必须出现在GROUP BY子句中,因此在GROUP BY中额外添加了i.name字段,避免语法报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:18:03