Mysql
 sql >> Baza danych >  >> RDS >> Mysql

php mysql Grupuj według, aby uzyskać najnowszy rekord, a nie pierwszy rekord

Jeśli wybierzesz atrybuty, które nie są używane w klauzuli group i nie są agregacją, wynik jest nieokreślony. To znaczy nie wiesz, z których wierszy zostały wybrane inne atrybuty. (Standard sql nie zezwala na takie zapytania, ale MySQL jest bardziej swobodny).

Zapytanie należy wtedy napisać m.in. 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;

lub

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zrozumienie dziennika audytu ProxySQL

  2. Zserializowana tablica wartości meta WooCommerce w tabeli wp_postmeta

  3. MySQL - Nie można utworzyć widoku ze zmienną SET w środku

  4. Jak zoptymalizować wyszukiwanie pełnotekstowe MySQL Boolean? (Lub czym go zastąpić?) - C#

  5. Musisz przekonwertować kolumny na wiersze w MYSQL