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

PostgreSQLが特定のIDの最新のエントリを選択

    これを行うには約5つの異なる方法がありますが、ここに1つあります:

    SELECT *
    FROM yourTable AS T1 
    WHERE NOT EXISTS(
        SELECT *
        FROM yourTable AS T2
        WHERE T2.ID = T1.ID AND T2.Date > T1.Date
    )
    

    そして、ここにもう1つあります:

    SELECT T1.*
    FROM yourTable AS T1
    LEFT JOIN yourTable AS T2 ON
    (
        T2.ID = T1.ID 
        AND T2.Date > T1.Date
    )
    WHERE T2.ID IS NULL
    

    もう1つ:

    WITH T AS (
        SELECT *, ROW_NUMBER() OVER(PARTITION BY ID ORDER BY Date DESC) AS rn
        FROM yourTable
    )
    SELECT * FROM T WHERE rn = 1
    

    わかりました、私は夢中になっています、これが私が投稿する最後のものです(今のところ):

    WITH T AS (
        SELECT ID, MAX(Date) AS latest_date
        FROM yourTable
        GROUP BY ID
    )
    SELECT yourTable.*
    FROM yourTable
    JOIN T ON T.ID = yourTable.ID AND T.latest_date = yourTable.Date
    


    1. T-SQLでのSQLServer正規表現

    2. SqlServerのraiserrorメッセージをC#に保存する

    3. Postgresの行サイズを理解する

    4. TO_SECONDS()がMariaDBでどのように機能するか