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

如何查询数据表中name、birthday列组合存在重复的所有行记录

SQL查询实现方案

需求:从包含id, name, birthday, clinic字段的表中,筛选出name和birthday两列组合存在重复的所有关联记录。

方法1:窗口函数实现(支持MySQL8.0+、PostgreSQL、SQL Server等主流数据库)

SELECT id, name, birthday, clinic
FROM (
    SELECT
        *,
        -- 按name和birthday分组统计每组总记录数
        COUNT(*) OVER(PARTITION BY name, birthday) AS repeat_cnt
    FROM 你的实际表名
) tmp
WHERE repeat_cnt >= 2;

逻辑说明

先通过窗口函数给每一行标注对应name+birthday分组的总记录数,再过滤出总记录数≥2的分组下的所有行,即可返回所有存在重复组合的关联记录。

方法2:子查询匹配实现(兼容低版本数据库如MySQL5.x)

SELECT id, name, birthday, clinic
FROM 你的实际表名
WHERE (name, birthday) IN (
    -- 先找出所有存在重复的name+birthday组合
    SELECT name, birthday
    FROM 你的实际表名
    GROUP BY name, birthday
    HAVING COUNT(*) >= 2
);

逻辑说明

内层查询先聚合统计出所有出现次数≥2的name+birthday组合,外层查询匹配原表中属于这些组合的所有记录,结果和窗口函数方案完全一致。

两种方案执行后都可以得到你给出的预期输出结果,排除仅出现1次的john记录,返回mary和pete对应的全部6条记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:54:04