Řazení záznamů při GROUP BY

Publikováno MySQL

Situace: Potřebujete seznam nejnovějších článků od všech redaktorů.

Vytvoříme tedy dotaz jako tento:

SELECT * FROM `articles` GROUP BY `author_id` ORDER BY `created_date` DESC 
#Dotaz trval 0.0036 sekund

Zjistíme ale, že dotaz vrací ne poslední článek od každého redaktora, ale první, který byl do databáze vložený. To je špatně. Jelikož příkaz GROUP BY se provádí před ORDER BY.

Řešením je použití vnořeného SQL dotazu, kde nejprve výsledky seřadíme.

SELECT * FROM 
(SELECT * FROM `articles` ORDER BY `created_date` DESC) as t
GROUP BY `author_id` 
#Dotaz trval 0.0042 sekund

Komentáře