我正在尋找一種方法來處理以下情形。我有一個數據庫表,我需要爲表中包含的每個「組ID」只返回一條記錄,而且每個組中選擇的記錄應該是家中最老的人。SQL查詢每個組只返回1條記錄ID
ID Group ID Name Age
1 134 John Bowers 37
2 134 Kerri Bowers 33
3 135 John Bowers 44
4 135 Shannon Bowers 42
所以在上面提供的示例數據中,我需要ID 1和3返回,因爲它們是每個組ID中最老的人。
這是針對SQL Server 2005數據庫查詢的。
如果你想要這個名字,如果你有> 1個年齡最大的人,你仍然有機會選擇> 1行。在這種情況下,你也應該建立標準名稱。 – 2009-12-23 17:36:26
好點克里斯。是試圖簡化這個問題一點,但是留下這樣的漏洞:-)我其實有一個性別領域,所以我正在尋找選擇一個家庭中最老的男性。如果有男性,那麼最老的女性。如果同一家庭中有兩名男性同齡,那麼我只需要選擇其中的一項。這可以基於簡單的事情,就像打破決鬥者身份證號碼最低的人那樣簡單。 – 2009-12-23 17:50:59
Joe Celko的優秀着作「SQL for Smarties」第21.4節「極值函數」中有一個很好的討論。如果你要碰到比簡單的SELECT和INSERT更棘手的事情,我強烈推薦本書。 – shoover 2009-12-23 18:05:09