需求:查询ctoc_tb表中用户最早操作记录
1、首先下面这样写是错误的
select user_id,min(date_time) min_time from ctoc_tb group by user_id
原因:这样查询出的数据date_time确实是对应的最早时间,但是显示出来的user_id信息,不是和最早时间date_time对应的。当你使用GROUP_CONCAT(user_id)就知道其中对应很多用户,只是mysql的机制只显示出最早查到的用户id
select GROUP_CONCAT(user_id),min(date_time) min_time from ctoc_tb group by user_id
查询如下,min_time 和user_id不是唯一对应的
正确写法修改如下
SELECT
A.*
FROM
ctoc_tb A,
(
SELECT
user_id,
min(date_time) min_time
FROM
ctoc_tb
GROUP BY
user_id
) B
WHERE
A.user_id = B.user_id
AND A.date_time = B.min_time
查询结果如下:
同样在mysql中查询时间最大的一条记录,原理也是如此