在同一个mysql表中的两个不同列中查找同一年

时间:2014-02-09 21:12:53

标签: mysql

我需要做一个mysql查询,它将回答总统大会上的问题 - 总统出生和其他总统去世的那几年?

总统表有以下几点 Last_name,first_name,birth,death,state,city

我试过

SELECT * FROM President WHERE YEAR(出生)= YEAR(死亡); 但我得到了空位。

我在这里缺少什么?帮助!

2 个答案:

答案 0 :(得分:0)

您需要做的是查询总统表,然后重新加入与死亡日期和出生日期相匹配的表格。

SELECT * FROM presidents p1
JOIN presidents p2
ON p1.birth = p2.death

这只返回总统出生时与总统死亡人数相匹配的行。如果您想要所有分娩,您可以使用LEFT JOIN,并且对于所有死亡,您可以使用RIGHT JOIN

答案 1 :(得分:0)

SELECT * FROM president WHERE YEAR(birth) in (Select YEAR(death) from president);

或者如果你真的想要列出年份:

SELECT distinct YEAR(birth) FROM president WHERE YEAR(birth) in
(Select YEAR(death) from president);

或者你也可以用连接来解决它:

SELECT * FROM president p1 inner join president p2 on (YEAR(p1.birth) = YEAR(p2.death));

编辑: 解释你在陈述中遗漏的内容。你只是在比较同一位总统的出生年份和死亡年份。您没有将该行与其他行进行比较。