Mysql为每个组选择最后一行

use*_*521 0 mysql greatest-n-per-group

SELECT  
MAX('time'), c_id, message, state, time 
FROM message 
WHERE receive = 1 
GROUP BY c_id
Run Code Online (Sandbox Code Playgroud)

我有一个mysql查询,我尝试选择每个组的最后一行,但它不起作用.

c_id是该组.它现在选择每个组的第一行.

Joh*_*Woo 11

首先,您不应该使用单引号转义列名,因为它不是字符串文字.
其次,您可以执行子查询,分别获取每个的最新时间,c_id并将其与原始表连接回来以获取其他列.

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
Run Code Online (Sandbox Code Playgroud)

要么

SELECT  a.*
FROM    message a
WHERE   a.time =
        (
            SELECT  MAX(time) time
            FROM    message b
            WHERE   a.c_id = b.c_id
        ) 
Run Code Online (Sandbox Code Playgroud)