SQL查询只返回每个组ID 1个记录
发布时间:2020-12-12 06:24:21 所属栏目:MsSql教程 来源:网络整理
导读:我正在寻找一种方法来处理以下情况.我有一个数据库表,我需要为表中包含的每个“组ID”返回一个记录,此外,每组中选择的记录应该是家庭中最老的. ID Group ID Name Age1 134 John Bowers 372 134 Kerri Bowers 333 135 John Bowers 444 135 Shannon Bowers 42
我正在寻找一种方法来处理以下情况.我有一个数据库表,我需要为表中包含的每个“组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数据库. 解决方法SELECT t.* FROM ( SELECT DISTINCT groupid FROM mytable ) mo CROSS APPLY ( SELECT TOP 1 * FROM mytable mi WHERE mi.groupid = mo.groupid ORDER BY age DESC ) t 或这个: SELECT * FROM ( SELECT *,ROW_NUMBER() OVER (PARTITION BY groupid ORDER BY age DESC) rn FROM mytable ) WHERE rn = 1 即使是关系,这也可以返回每个组最多一个记录. 在我的博客中看到这篇文章,用于两种方法的性能比较: > SQL Server: Selecting records holding group-wise maximum (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |