SQL将属性与同一表中的另一行属性进行比较

时间:2016-04-21 10:14:47

标签: mysql

让我们说我有一张名字和出生日期的人。 我如何选择所有人的DofB比其他人更多,而只知道人名而不是DofB?

3 个答案:

答案 0 :(得分:2)

你有一些选择,但我喜欢在这里加入。

假设您有一个唯一的名称字段(使用像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

答案 1 :(得分:1)

使用像

这样的简单mysql查询

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

像这样的东西

答案 2 :(得分:1)

这会发现所有人的DOB都比你不确定他们的DOB的人更多(或更年轻),但知道他们的名字:

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