Sql 查找每年生日相同的所有员工对
正如问题的标题所说,我希望找到每年生日相同的所有员工对,例如结果表的每一行必须显示一对员工,并且每对员工只能在结果表中出现一次 我的查询如下所示,只查找具有相同生日的成对的人,并且每对人出现多次,但不查找每年具有相同生日的不同年龄的人Sql 查找每年生日相同的所有员工对,sql,Sql,正如问题的标题所说,我希望找到每年生日相同的所有员工对,例如结果表的每一行必须显示一对员工,并且每对员工只能在结果表中出现一次 我的查询如下所示,只查找具有相同生日的成对的人,并且每对人出现多次,但不查找每年具有相同生日的不同年龄的人 SELECT DISTINCT E1.empno, E1.firstnme, E1.lastname, E1.birthdate,
SELECT DISTINCT E1.empno,
E1.firstnme,
E1.lastname,
E1.birthdate,
E2.empno,
E2.firstnme,
E2.lastname,
E2.birthdate
FROM employee E1
INNER JOIN employee E2
ON E1.birthdate = E2.birthdate
WHERE Day(E1.birthdate) = Day(E2.birthdate)
AND Month(E1.birthdate) = Month(E2.birthdate)
AND E1.empno <> E2.empno `
选择不同的E1.empno,
E1.NME,
E1.lastname,
E1.出生日期,
E2.empno,
E2.NME,
E2.lastname,
E2.出生日期
来自员工E1
内部连接雇员E2
在E1.birthdate=E2.birthdate
其中日期(E1.生日)=日期(E2.生日)
月份(E1.生日)=月份(E2.生日)
和E1.empno E2.empno`
如果你能帮助我,我将非常感激 不要使用empno比较,使用>或问题是您是在实际日期加入的。您可以在日/月加入,也可以删除加入:
SELECT DISTINCT E1.empno,
E1.firstnme,
E1.lastname,
E1.birthdate,
E2.empno,
E2.firstnme,
E2.lastname,
E2.birthdate
FROM employee E1
INNER JOIN employee E2
ON Day(E1.birthdate) = Day(E2.birthdate)
AND Month(E1.birthdate) = Month(E2.birthdate)
AND E1.empno < E2.empno
选择不同的E1.empno,
E1.NME,
E1.lastname,
E1.出生日期,
E2.empno,
E2.NME,
E2.lastname,
E2.出生日期
来自员工E1
内部连接雇员E2
日期(E1.生日)=日期(E2.生日)
月份(E1.生日)=月份(E2.生日)
E1.empno
或
选择不同的E1.empno,
E1.第一个,
E1.lastname,
E1.出生日期,
E2.empno,
E2.NME,
E2.lastname,
E2.出生日期
来自员工E1、员工E2
其中日期(E1.生日)=日期(E2.生日)
月份(E1.生日)=月份(E2.生日)
E1.empno
你们很接近
将where条件放在连接中,就完成了
FROM employee E1
INNER JOIN employee E2
ON Day(E1.birthdate) = Day(E2.birthdate)
AND Month(E1.birthdate) = Month(E2.birthdate)
AND E1.empno <> E2.empno `
来自员工E1
内部连接雇员E2
日期(E1.生日)=日期(E2.生日)
月份(E1.生日)=月份(E2.生日)
和E1.empno E2.empno`
如果有3个人的出生日期相同呢?这只会显示出生年份相同的配对,对吗?我编辑了查询以忽略日期中的年份部分。@JoeLove您忽略的是日期,而不是年份。很抱歉,请再次查看。我的脑子显然坏了。谢谢你的提醒@dstanley非常感谢你的帮助!
SELECT DISTINCT E1.empno,
E1.firstnme,
E1.lastname,
E1.birthdate,
E2.empno,
E2.firstnme,
E2.lastname,
E2.birthdate
FROM employee E1, employee E2
WHERE Day(E1.birthdate) = Day(E2.birthdate)
AND Month(E1.birthdate) = Month(E2.birthdate)
AND E1.empno < E2.empno
FROM employee E1
INNER JOIN employee E2
ON Day(E1.birthdate) = Day(E2.birthdate)
AND Month(E1.birthdate) = Month(E2.birthdate)
AND E1.empno <> E2.empno `