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

MySQL

POZOR! Článek jsem napsal před více jak rokem, a tudíž už nemusí reflektovat můj nynější názor nebo může být zastaralý.

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

Znáte někoho, komu by článek mohl pomoct? Zasdílejte mu ho :)

Komentáře