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

クエリ内の最新のレコードを取得する

    MySQL には、ランキング/分析/ウィンドウ機能がありません。

    SELECT tl.locationid, tl.timestamp, tp.name, X, Y, Z
      FROM tblPerson tp
      JOIN tblLocation tl ON tl.personid = tp.personid
      JOIN (SELECT t.personid,
                   MAX(t.timestamp) AS max_date
              FROM tblLocation t
          GROUP BY t.personid) x ON x.personid = tl.personid
                                AND x.max_date = tl.timestamp
    

    SQL Server 2005+ および Oracle 9i+ は分析をサポートしているため、以下を使用できます:

    SELECT x.locationid, x.timestamp, x.name, x.X, x.Y, x.Z
      FROM (SELECT tl.locationid, tl.timestamp, tp.name, X, Y, Z,
                   ROW_NUMBER() OVER (PARTITION BY tp.name ORDER BY tl.timestamp DESC) AS rank
              FROM tblPerson tp
              JOIN tblLocation tl ON tl.personid = tp.personid) x
    WHERE x.rank = 1
    

    変数を使用して MySQL の ROW_NUMBER 機能と同じものを取得する:

    SELECT x.locationid, x.timestamp, x.name, x.X, x.Y, x.Z
      FROM (SELECT tl.locationid, tl.timestamp, tp.name, X, Y, Z,
                   CASE
                     WHEN @name != t.name THEN
                       @rownum := 1
                     ELSE @rownum := @rownum + 1
                   END AS rank,
                   @name := tp.name
              FROM tblLocation tl
              JOIN tblPerson tp ON tp.personid = tl.personid
              JOIN (SELECT @rownum := NULL, @name := '') r
          ORDER BY tp.name, tl.timestamp DESC) x
    WHERE x.rank = 1
    


    1. SQL Server 2008 の varbinary(max) 列に Excel ファイルを挿入/取得するにはどうすればよいですか?

    2. ColdfusionとMySQLを使用してデータを解析および比較する

    3. 同じページに削除ボタンを含むPHPとMySQL

    4. $ wpdb-> prepareでlikeステートメントを使用して、ワイルドカード文字が存在する場所にハッシュを表示する