sql >> Databasteknik >  >> RDS >> Mysql

Få en MySQL-grupp efter fråga för att visa raden i den gruppen med det högsta värdet

Använd:

  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 har inte analytisk/ranking/fönsterfunktionalitet, men detta rankar recensionerna där den senaste är markerade som 1. Detta är per bok...

Jag exponerade recensionsdatumet för att beställa senast av de som är de senaste per bok...




  1. MySQL-heltalsjämförelse ignorerar efterföljande alfatecken

  2. SQL Server Failover Cluster Installation -1

  3. PLSQL :NY och :GAMMEL

  4. Laravel MySql DB-anslutning med SSH