mysql分组后显示最新数据
方法一:NOT EXISTS
SELECT
e.GROUP_COLUMN,
e.COMPARE_TIME
FROM
TABLE e
WHERE
NOT EXISTS (
SELECT
1
FROM
TABLE
WHERE
e.GROUP_COLUMN = GROUP_COLUMN
AND e.COMPARE_TIME < COMPARE_TIME
)
GROUP BY
GROUP_COLUMN
说明:NOT EXISTS可以直接理解为“不存在”的意思。说白了,就是在e表中不存在比NOT EXISTS表中更小的COMPARE_TIME时间,返回来理解,就是e表中的COMPARE_TIME最大。
方法二:子查询(1)
SELECT
GROUP_COLUMN,
COMPARE_TIME
FROM
(
SELECT
*
FROM
TABLE
ORDER BY
COMPARE_TIME DESC
) a
GROUP BY
GROUP_COLUMN
说明:子查询按时间逆序排序,外层查询分组后取第一条,第一条就是最新的数据。注意,子查询有时候要加limit。
子查询(2)
SELECT
a.*
FROM
(
SELECT
GROUP_COLUMN,
max(COMPARE_TIME) AS COMPARE_TIME
FROM
TABLE
GROUP BY
GROUP_COLUMN
) a
LEFT JOIN TABLE e ON a.GROUP_COLUMN = e.GROUP_COLUMN
AND a.COMPARE_TIME = e.COMPARE_TIME
说明:这个方法是先把最新的数据的时间查出来,然后在和基础表联查。此方法适用于分组后各组的最新时间均不一致的情况,否则会导致数据错误!
如有问题,请指出,谢谢!
后续低带更新。。。