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

Oracleから各グループの最新の行を選択します

    分析関数を使用できます

    SELECT *
      FROM (SELECT c.*,
                   rank() over (partition by user_id order by ts desc) rnk
              FROM comments c)
     WHERE rnk = 1
    

    同点の処理方法によって異なります(同じ user_id を持つ2つの行が存在する可能性がある場合) およびts )、 row_numberを使用することをお勧めします またはdense_rank ランクではなく関数 。 ランク 同点の場合、複数の行を最初にすることができます。 row_number 同点の場合、任意に1行を返します。 density_rank ランクのように動作します 最初に同点であるが、2つの行が最初に同点であると仮定すると、次の行は3番目ではなく2番目であると見なされる行の場合。



    1. MySQLとMongoDB

    2. SQLite AUTOINCREMENT

    3. MySQLのMAX()とGREATEST():違いは何ですか?

    4. MariaDBでのCURDATE()のしくみ