sql >> Databáze >  >> RDS >> Mysql

Získání skupiny MySQL dotazem pro zobrazení řádku v této skupině s nejvyšší hodnotou

Použijte:

  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 nemá analytickou/ranking/windowing funkcionalitu, ale to řadí recenze tam, kde je nejnovější označena jako 1. Toto je na základě knihy...

Vystavil jsem datum recenze, abych si objednal nejnovější z těch, které jsou nejnovější pro každou knihu...




  1. Upravit tabulku mysql

  2. Proč Postgresql takto selhává s Geokitem?

  3. Spusťte sledování změn v databázi MySQL

  4. PostgreSQL guts:Co je to „resjunk“?