Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySql :Order by et Group By combinant ne donnant pas le dernier enregistrement

Comment pouvez-vous GROUP BY id_thread lorsqu'il n'y a pas de id_thread colonne dans votre tableau ?

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

Sur la base de vos commentaires, ce que vous voulez est le plus récent (classé par created ) ligne pour chaque id_thread , qui est une requête différente et plus complexe. Il existe même une balise pour ce type de requêtes, nommée [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