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

SQL查询:仅返回含1行明细的订单 过滤多行明细订单记录

解决方案

方案1:窗口函数实现(适用MySQL8.0+/PostgreSQL/Oracle等支持窗口函数的数据库)

该写法逻辑直观,仅需一次表扫描性能更好:

SELECT order_no, line_no
FROM (
    SELECT 
        order_no, 
        line_no,
        -- 按订单号分组统计每个订单的总明细行数
        COUNT(*) OVER (PARTITION BY order_no) AS total_line
    FROM customer_order_line
    -- 如需筛选包含指定商品的订单,在此处添加商品过滤条件,例:WHERE goods_id = '指定商品ID'
    WHERE order_no IN('9891026','9891025')
) t
WHERE total_line = 1;

方案2:分组子查询实现(兼容所有数据库版本,包括低版本MySQL)

通过子查询先筛选出明细行数恰好为1的订单号,再关联查询明细:

SELECT order_no, line_no
FROM customer_order_line
WHERE order_no IN (
    SELECT order_no
    FROM customer_order_line
    -- 如需筛选包含指定商品的订单,在此处添加商品过滤条件
    WHERE order_no IN('9891026','9891025')
    GROUP BY order_no
    HAVING COUNT(*) = 1
);

执行结果

两种写法在你的测试场景下都会返回期望的结果:

order_noline_no
98910251

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:36:07