我想加入多對一關係,但根據條件挑選其中一條記錄加入,本例中爲最大日期。這是一個簡化的模式;MySql根據條件加入多對一但只獲取一條相關記錄
parent
---------
id | name
---------
1 | Bob
2 | Mary
3 | Pat
child
----------------------------------
id | parent_id | name | birthdate
----------------------------------
11 | 1 | Anne | 2014-01-01
12 | 2 | Jane | 2014-01-02
13 | 3 | John | 2016-06-01
14 | 1 | Mark | 2016-08-01
15 | 2 | Jack | 2016-01-01
16 | 2 | Jill | 2016-01-01
父母可以有零個或多個孩子。孩子的生日可以在未來(懷孕)。來自同一父母的兩個孩子可以有相同的生日(雙胞胎)。
我想獲得父母的記錄和他們最小的孩子。對於最年幼的雙胞胎,我不在乎選擇哪個孩子。所以在這種情況下,鮑勃有兩個孩子,他們最小的是馬克,他將於8月8日出生。瑪麗有3個孩子。她的兩個最小的雙胞胎是傑克和吉爾。帕特沒有孩子。所以我想得到;
id | name | child | birthdate
-----------------------------
1 | Bob | Mark | 2016-08-01
2 | Mary | Jack | 2016-01-01
3 | Pat | null | null
是否可以在單個查詢中執行此操作?
類似的問題,可能是有用的:http://stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of-grouped-results。從問題 – drneel
的父母=組中,我認爲您的數據存在錯誤:id = 3的父母有一個孩子,「John」。 –
父母不能有0個孩子 – Strawberry