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

php mysql Group By pro získání nejnovějšího záznamu, nikoli prvního záznamu

Pokud vyberete atributy, které nejsou použity v klauzuli skupiny a nejsou agregované, výsledek není specifikován. Tedy nevíte, ze kterých řádků jsou vybírány ostatní atributy. (Standard sql takové dotazy neumožňuje, ale MySQL je uvolněnější).

Dotaz by pak měl být napsán např. jako

SELECT post_id, forum_id, topic_id
FROM posts p
WHERE post_time =
  (SELECT max(post_time) FROM posts p2
   WHERE p2.topic_id = p.topic_id
   AND p2.forum_id = p.forum_id)
GROUP BY forum_id, topic_id, post_id
ORDER BY post_time DESC
LIMIT 5;

nebo

SELECT post_id, forum_id, topic_id FROM posts
NATURAL JOIN
(SELECT forum_id, topic_id, max(post_time) AS post_time
 FROM posts
 GROUP BY forum_id, topic_id) p
ORDER BY post_time
LIMIT 5;


  1. SQL Server DELETE – odstranění jednoho nebo více řádků z tabulky s mírně pokročilými scénáři

  2. Hromadné shromáždění a okamžité provedení v Oracle

  3. Jak opravit „název profilu není platný“ při aktualizaci profilu pošty databáze v SQL Server (T-SQL)

  4. Porovnání období