我正在寻找一种方法来处理以下情形。我有一个数据库表,我需要为表中包含的每个“组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