SQL查询只返回每个组ID 1个记录

前端之家收集整理的这篇文章主要介绍了SQL查询只返回每个组ID 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数据库.

解决方法

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

原文链接:https://www.f2er.com/mssql/79195.html

猜你在找的MsSQL相关文章