【问题标题】:SQL compare attributes to another row's attribute in the same tableSQL 将属性与同一表中另一行的属性进行比较
【发布时间】:2016-04-21 10:14:47
【问题描述】:

假设我有一张包含姓名和出生日期的人的表格。 如何在只知道那个人的名字而不知道 DofB 的情况下选择所有具有比另一个人更大的 DofB 的人的名字?

【问题讨论】:

  • 提供样本数据和输出
  • 你试过了吗?
  • @Kobi 我不确定语法,这就是我要问的原因

标签: mysql


【解决方案1】:

你有一些选择,但我喜欢这里的 JOIN。

假设您有一个唯一的名称字段(使用像 id 这样的唯一行标识符可能更好):

SELECT p.name
  FROM person p
  JOIN person po
    ON po.name = :name_that_you_know
 WHERE p.dob > po.dob

此交叉连接每个人行与您命名的人所在的行。 结果按出生日期比较过滤。

您也可以在 JOIN 条件下执行过滤:

SELECT p.name
  FROM person p
  JOIN person po
    ON po.name = :name_that_you_know
   AND po.dob < p.dob

【讨论】:

    【解决方案2】:

    这将找到所有 DOB 大于(或小于)您不确定 DOB 但知道其姓名的人的人:

    SELECT name
    FROM yourTable
    WHERE DOB > (SELECT DOB FROM yourTable WHERE name = 'nameyouknow'); 
    

    【讨论】:

      【解决方案3】:

      使用简单的 mysql 查询,例如

      SELECT a.name, b.dob FROM table a INNER JOIN table b ON b.name = 'john' AND a.dob &gt; b.dob

      类似的东西

      【讨论】:

      • 不知道生日,只知道人名。
      猜你喜欢
      • 1970-01-01
      • 2022-07-12
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      相关资源
      最近更新 更多