Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mysql wählen Sie die letzte Zeile für jede Gruppe aus

Erstens sollten Sie den Spaltennamen nicht mit einfachen Anführungszeichen maskieren, da es sich nicht um ein Zeichenfolgenliteral handelt.
Zweitens können Sie eine Unterabfrage durchführen, die separat die neueste Zeit für jede c_id erhält und verbinden Sie sie wieder mit der ursprünglichen Tabelle, um die anderen Spalten zu erhalten.

SELECT  a.*
FROM    message a
        INNER JOIN
        (
            SELECT  c_id, MAX(time) time
            FROM    message
            GROUP   BY c_id
        ) b ON a.c_id = b.c_id AND
                a.time = b.time

oder

SELECT  a.*
FROM    message a
WHERE   a.time =
        (
            SELECT  MAX(time) time
            FROM    message b
            WHERE   a.c_id = b.c_id
        )