Mysql为每个组选择最后一行
我有一个mysql查询,我试图选择每个组的最后一行,但它不起作用Mysql为每个组选择最后一行,mysql,greatest-n-per-group,Mysql,Greatest N Per Group,我有一个mysql查询,我试图选择每个组的最后一行,但它不起作用 c_id是组。它现在选择每个组的第一行。首先,不应使用单引号转义列名,因为它不是字符串文字。 其次,您可以执行子查询,分别获取每个c_id的最新时间,并将其与原始表联接,以获取其他列 SELECT MAX('time'), c_id, message, state, time FROM message WHERE receive = 1 GROUP BY c_id 或 谢谢吴宇森 SELECT a.* FROM
c_id是组。它现在选择每个组的第一行。首先,不应使用单引号转义列名,因为它不是字符串文字。 其次,您可以执行子查询,分别获取每个c_id的最新时间,并将其与原始表联接,以获取其他列
SELECT
MAX('time'), c_id, message, state, time
FROM message
WHERE receive = 1
GROUP BY c_id
或
谢谢吴宇森
SELECT a.*
FROM message a
WHERE a.time =
(
SELECT MAX(time) time
FROM message b
WHERE a.c_id = b.c_id
)
尝试使用此代码
描述从表格底部开始
限制1在示例中仅选择一行将选择最后一行能否显示一些示例数据?定义最后一行。定义不工作。@第二个解决方案来自MySQL文档。。。第一个也是,但是第一个要快几个数量级!
SELECT a.*
FROM message a
WHERE a.time =
(
SELECT MAX(time) time
FROM message b
WHERE a.c_id = b.c_id
)
SELECT a.* FROM survey_question_option a INNER JOIN (
SELECT subordinate_question, MAX(sort) sort
FROM survey_question_option
WHERE question_id=14
GROUP BY subordinate_question
) b ON ((a.subordinate_question = b.subordinate_question) OR (a.subordinate_question IS NULL AND b.subordinate_question IS NULL)) AND
a.sort = b.sort AND a.question_id=14;
SELECT
MAX('time'), c_id, message, state, time
FROM message
WHERE receive = 1
GROUP BY c_id
DESC LIMIT 1;