sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2008 でユーザー名で最新のレコード グループを選択する

    ここにはいくつかのオプションがありますが、 ROW_NUMBER を追加することを使用します userでグループ化 timestamp で並べ替え (降順) 最新のレコードを簡単に選択できます。

    ROW_NUMBER の使用

    SELECT *
    FROM   (
             SELECT ID, voting_ID, username, timestamp, XMLBallot
                    , rn = ROW_NUMBER() OVER (PARTITION BY voting_ID, username ORDER BY timestamp DESC)
             FROM   Ballots
           ) bt 
    WHERE  rn = 1
      

    または、ユーザーごとの最大タイムスタンプを選択して、それに参加することもできます。

    MAX の使用

    SELECT bt.ID, bt.voting_ID, bt.username, bt.timestamp, bt.XMLBallot
    FROM   Ballots bt
           INNER JOIN (
              SELECT username, voting_ID, timestamp = MAX(timestamp)
              FROM   Ballots
              GROUP BY
                     username, voting_ID
            ) btm ON btm.username = bt.Username
                     AND btm.voting_ID = bt.voting_ID
                     AND btm.timestamp = bt.timestamp
      

    1. PHPでビットマスクまたはリレーショナルACLを実装する

    2. SQLServerでのNOLOCKヒントの基本と使用法

    3. BoneCPの正しい使用法

    4. MySQLエラー1005(HY000):テーブル'foo。#sql-12c_4'を作成できません(errno:150)