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

如何在MySQL中查询所有重复行(关联companies与addresses表)

解决方案

要找出满足以下任一条件的重复公司记录:

  1. 多个公司共享同一个phone_number
  2. 多个公司共享完全相同的地址信息(a1、a2、postal)

可以使用以下SQL语句实现:

WITH company_address AS (
    SELECT 
        c.uuid,
        c.name,
        c.phone_number,
        a.a1,
        a.a2,
        a.postal,
        -- 统计相同手机号的公司数量
        COUNT(*) OVER (PARTITION BY c.phone_number) AS phone_dup_count,
        -- 统计相同地址组合的公司数量
        COUNT(*) OVER (PARTITION BY a.a1, a.a2, a.postal) AS addr_dup_count
    FROM companies c
    JOIN addresses a ON c.uuid = a.parent_uuid
)
SELECT uuid, name, phone_number
FROM company_address
WHERE phone_dup_count > 1 OR addr_dup_count > 1
ORDER BY uuid;

逻辑说明

  1. 关联表数据:通过parent_uuid字段将companies和addresses表关联,获取每个公司对应的完整地址信息。
  2. 统计重复频次:
    • 基于phone_number分组,统计每个手机号对应的公司数量
    • 基于a1、a2、postal组合分组,统计每个地址对应的公司数量
  3. 筛选重复记录:只要手机号重复数大于1,或者地址组合重复数大于1,就将该公司记录筛选出来。

结果验证

结合你的示例数据:

  • 5esd和6dcv的地址信息完全一致,地址重复数为2,会被纳入结果
  • 56js和tug8的手机号完全一致,手机号重复数为2,会被纳入结果
  • jkj9的手机号和地址均无重复,不会出现在结果中

最终输出结果与你预期的4行记录完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:55:19