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

MySql :Sortuj według i Grupuj, łącząc nie dając najnowszego rekordu

Jak możesz GROUP BY id_thread gdy nie ma id_thread kolumna w Twojej tabeli?

SELECT * 
FROM contacts 
WHERE id_receiver = 1 
                                 --- GROUP BY id_thread
                                 --- removed 
ORDER BY created DESC
LIMIT 1                          --- only show one row

Na podstawie Twoich komentarzy, chcesz, aby była najnowsza (uporządkowana przez created ) wiersz dla każdego id_thread , który jest innym i bardziej złożonym zapytaniem. Istnieje nawet tag dla tego rodzaju zapytań o nazwie [greatest-n-per-group] .

SELECT c.* 
FROM contacts AS c
  JOIN
    ( SELECT id_thread, MAX(created) AS created 
      FROM contacts 
      WHERE id_receiver = 1  
      GROUP BY id_thread
    ) AS g 
    ON (g.id_thread, g.created) = (c.id_thread, c.created) 
WHERE c.id_receiver = 1  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ASP.NET API:żaden dostawca bazy danych nie został skonfigurowany dla tego DbContext

  2. Daj pierwszeństwo ORDER BY nad GROUP BY w MySQL bez podzapytania

  3. Zapytania MySQL IN są strasznie wolne z podzapytaniem, ale szybkie z określonymi wartościami

  4. Wydajność MySQL:MyISAM kontra InnoDB

  5. Łączysz się z bazą danych z rozszerzenia Chrome?