【问题标题】:find the same year in two different columns in the same mysql table在同一个mysql表的两个不同列中找到同一年
【发布时间】:2023-03-23 03:38:01
【问题描述】:

我需要做一个 mysql 查询来回答总统表中的问题 - 总统出生的年份和其他总统去世的年份?

总统表有以下内容 姓氏、名字、出生、死亡、州、城市

我试过了

SELECT * FROM 总统 WHERE YEAR(birth) = YEAR(death); 但是我得到了空集。

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

【问题讨论】:

  • 如果优化器了解美国宪法,它就会知道对于担任总统职位的任何特定人员,YEAR(death) 必须至少为 YEAR(birth)+35

标签: mysql


【解决方案1】:

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

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

这仅返回总统出生与总统死亡相匹配的行。如果您想要所有出生,您可以使用LEFT JOIN,对于所有死亡,您可以使用RIGHT JOIN

【讨论】:

    【解决方案2】:
    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));
    

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

    【讨论】:

      猜你喜欢
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      • 2012-05-29
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 2016-01-13
      相关资源
      最近更新 更多