如何比较两行并在一组多对中找到两者中的较大者?

时间:2015-10-27 21:47:30

标签: mysql sql

好吧,所以我有一张人的桌子,每个人都属于一对。我需要运行一个只获得每对夫妇的旧成员的查询。这是我的架构:

id BIGINT
name VARCHAR(32)
couple_id VARCHAR(255)
birthdate TIMESTAMP

我正在处理的查询:

SELECT * FROM person
GROUP BY couple_id
HAVING birthdate > ???

couple_id是一个随机字符串。目前输出如下:

1 John        AAA 1985/12/04
2 Jane        AAA 1984/01/02
3 Christopher BBB 1991/07/07
4 Christina   BBB 1992/08/20
5 Alex        CCC 1995/02/07
6 Alexandra   CCC 1996/11/12

我需要一个返回John,Christina和Alexandra行的查询。

1 个答案:

答案 0 :(得分:1)

一种方法是使用派生表。

SELECT p1.*
FROM person p1
join (select couple_id, max(birthdate) as mxbrthdt
      from person group by couple_id) p2
on p2.couple_id = p1.couple_id and p1.birthdate = p2.mxbrthdt