SQL查询只返回每个组ID 1个记录
发布时间:2020-05-28 18:44:09 所属栏目:MsSql 来源:互联网
导读:我正在寻找一种方法来处理以下情况.我有一个数据库表,我需要为表中包含的每个“组ID”返回一个记录,此外,每组中选择的记录应该是家庭中最老的. ID Group ID Name Age1 134 John Bowers 372 134 Kerri Bowers 333 135 J
|
我正在寻找一种方法来处理以下情况.我有一个数据库表,我需要为表中包含的每个“组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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
