代码之家  ›  专栏  ›  技术社区  ›  Shawn

SQL问题:如何在每个记录组中选择任意数量的记录?

sql
  •  0
  • Shawn  · 技术社区  · 16 年前

    我想构造一个sql语句,从表中选择任意数量(比如3)的每个用户(由uid标识)的最近更新的记录。我该怎么做?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Andomar    16 年前

    select *
    from (
        select
            row_number() over (partition by uid order by UpdateDt desc) 
            as rn
        ,   *
        from YourTable
    ) sub
    where rn <= 3
    

    solution with user variables .

        2
  •  1
  •   gbn    16 年前
    DECLARE @Top tinyint;
    
    SELECT @Top = ABS(CHECKSUM(NEWID())) % 5 + 1;
    
    ;WITH MyCTE AS
    (
        SELECT
            stuff, things, 
            ROW_NUMBER() OVER (PARTITION BY uid ORDER BY UpdatedDateTime DESC) AS Ranking
        FROM
            MyTable
    )
    SELECT
        stuff, things
    FROM
        MyCTE
    WHERE
        Ranking <= @Top