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

MySQL查询均有订单的同名同VAT重复注册用户账号明细

问题分析

原SQL存在两处逻辑缺陷,无法满足输出要求:

  • 直接按first_name、last_name、VAT三个重复判定字段分组聚合,只能返回用户组维度的汇总统计,无法拆分展示组内单个账号的明细数据
  • 现有过滤逻辑仅能排除组内所有账号都无订单的情况,无法保证组内每一个账号都至少关联1条订单记录
实现方案

通过CTE分层计算可以准确满足需求,逻辑如下:

  • 第一层:基于全量用户表统计每个账号的关联订单总数,无订单的账号订单数记为0
  • 第二层:按三个重复判定字段分组,同时校验两个规则:组内账号总数≥2、组内账号的最低订单数≥1(即组内不存在0单账号),筛选出完全符合要求的重复用户组
  • 第三层:关联取到符合要求的分组下所有账号的明细数据,按指定格式逐行输出
可直接运行的SQL代码
WITH user_order_count AS (
    -- 统计全量每个用户的订单数,无订单用户订单数记为0
    SELECT 
        u.id,
        u.first_name,
        u.last_name,
        u.VAT,
        COUNT(DISTINCT o.id) AS orders
    FROM users u
    LEFT JOIN orders o ON u.id = o.user_id
    GROUP BY u.id, u.first_name, u.last_name, u.VAT
),
qualified_duplicate_groups AS (
    -- 筛选符合要求的重复组:账号数≥2,且组内所有账号至少有1单
    SELECT 
        first_name,
        last_name,
        VAT
    FROM user_order_count
    GROUP BY first_name, last_name, VAT
    HAVING 
        COUNT(DISTINCT id) >= 2,
        MIN(orders) >= 1
)
-- 输出组内所有账号的明细数据
SELECT 
    uoc.first_name AS `first name`,
    uoc.last_name AS `last name`,
    uoc.VAT AS vat,
    uoc.id,
    uoc.orders
FROM user_order_count uoc
INNER JOIN qualified_duplicate_groups qdg
    ON uoc.first_name = qdg.first_name
    AND uoc.last_name = qdg.last_name
    AND uoc.VAT = qdg.VAT
ORDER BY uoc.VAT, uoc.id;
返回结果说明

查询返回结果完全匹配需求格式:

  • 每个重复注册的账号单独占一行
  • 逐行展示用户的名、姓、VAT号、账号ID、该账号对应的订单总数
  • 自动排除存在0单账号的重复组、账号数不足2的非重复组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:48:43