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

クエリでMySQLグループを取得して、そのグループ内で最も高い値を持つ行を表示する

    使用:

      SELECT x.book_title,
             x.user_name
        FROM (SELECT b.book_title,
                     u.user_name,
                     br.review_date,
                     CASE
                       WHEN @book = b.book_title THEN @rownum := @rownum + 1
                       ELSE @rownum := 1
                     END AS rank,
                     @book := b.book_title
                FROM BOOKS b
                JOIN BOOK_REVIEWS br ON br.book_id = b.book_id
                JOIN USERS u ON u.user_id = br.user_id
                JOIN (SELECT @rownum := 0, @book := '') r
            ORDER BY b.book_title, br.review_date DESC) x
       WHERE x.rank = 1
    ORDER BY x.review_date DESC
       LIMIT 30
    

    MySQLには分析/ランク付け/ウィンドウ機能がありませんが、これは最新のものが1としてマークされているレビューをランク付けします。これは本ごとに基づいています...

    書籍ごとに最新のものを注文するためにレビュー日を公開しました...




    1. 階層カテゴリツリーでノードとそのアンカーのすべての兄弟を見つけるにはどうすればよいですか?

    2. トリガー内で動的にJOBを作成できますか?

    3. 特定のパターンに従ってリスト内のアイテムを再配置するにはどうすればよいですか?

    4. 奇妙なMySQLポップアップMysqlインストーラーがコミュニティモードを実行しています