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

zobrazit poslední 2 záznamy v každé kategorii z tabulky mysql

Tento typ výsledků nejlépe zvládnou funkce okna v jiných RDBMS, ale bohužel Mysql nemá žádné funkce okna, takže alternativou je řešení použít uživatelem definované proměnné k přiřazení pořadí pro řádky, které patří do stejné skupiny

SELECT  `id`, `category`, `names`
FROM (
SELECT *,
@r:= CASE WHEN @g = category THEN @r + 1 ELSE 1 END rownum,
@g:=category
FROM test
  CROSS JOIN(SELECT @g:=NULL ,@r:=0) t
  ORDER BY category,id desc
) c
WHERE c.rownum <=2 

Výše uvedený dotaz vám poskytne 2 poslední záznamy (na základě id) na kategorii, můžete změnit poslední část dotazu s klauzulí where na libovolné číslo, aby se zobrazilo n výsledků na skupinu, například pro zobrazení 3 záznamů, pak WHERE c.rownum <= 3 a tak dále

Demo



  1. ověřovací odkaz e-mailem

  2. Použití MySQL ve Flasku

  3. Mazání souvisejících záznamů v MySQL

  4. MySQL - UPDATE více řádků s různými hodnotami v jednom dotazu