sql >> Database >  >> RDS >> Mysql

Een MySQL-groep per query verkrijgen om de rij in die groep met de hoogste waarde weer te geven

Gebruik:

  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 heeft geen analytische/ranking/windowing-functionaliteit, maar dit rangschikt de recensies waarvan de laatste is gemarkeerd als 1. Dit is per boek...

Ik heb de recensiedatum bekendgemaakt om te bestellen voor de laatste van de laatste per boek...




  1. Inactieve mysql-verbindingen beëindigen

  2. Waarom heeft self.object in een CreateView geen id na het opslaan in de database?

  3. Hoe te ontsnappen aan de? (vraagteken) operator om Postgresql JSONB-type op te vragen in Rails

  4. Is er een Booleaans gegevenstype in Microsoft SQL Server zoals in MySQL?