Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir un groupe MySQL par requête pour afficher la ligne de ce groupe avec la valeur la plus élevée

Utiliser :

  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 n'a pas de fonctionnalité d'analyse/de classement/de fenêtrage, mais cela classe les avis où le plus récent est marqué comme 1. C'est sur une base par livre...

J'ai exposé la date de révision pour commander au plus tard de ceux qui sont les plus récents par livre...