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

如何查询Birthday表中重复日期组合对应的所有Name?

查询重复生日组合对应的姓名

这里有两种实用写法可以实现需求:

方法一:子查询筛选重复日期

先找出所有出现过至少两次的生日日期组合,再匹配原表拿到对应的姓名:

SELECT Name
FROM Birthday
WHERE (Day, Month, Year) IN (
    SELECT Day, Month, Year
    FROM Birthday
    GROUP BY Day, Month, Year
    HAVING COUNT(*) >= 2
)

原理很直接:子查询里按Day、Month、Year分组,用HAVING COUNT(*) >=2揪出重复的日期组合,外层查询通过IN匹配这些组合,就能拿到所有符合条件的姓名。

方法二:窗口函数(适合新版本数据库)

如果你的数据库支持窗口函数(比如MySQL 8.0+、PostgreSQL、SQL Server),可以用更直观的写法:

SELECT Name
FROM (
    SELECT 
        Name,
        COUNT(*) OVER(PARTITION BY Day, Month, Year) AS date_count
    FROM Birthday
) AS temp
WHERE date_count >= 2

内层查询给每一行都加上了对应生日组合的出现次数date_count,外层直接筛选次数≥2的记录,就能得到目标姓名。

内容的提问来源于stack exchange,提问作者c.d.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:50:53