提问者:小点点

使用group by[closed]从mysql获取最后一个数据


表架构

create table test (id int(10) , stat varchar(20) , regdt datetime);

insert into test values
(10001,'ON', '2020-06-29 01:00:00'),
(10002,'ON', '2020-06-29 02:00:00'),
(10003,'ON', '2020-06-29 03:00:00'),
(10003,'OFF','2020-06-29 04:00:00'),
(10004,'ON', '2020-06-29 05:00:00'),
(10004,'OFF','2020-06-29 06:00:00'),
(10004,'ON', '2020-06-29 07:00:00');

我只想要在stat列中以“on”结尾的那些。 所以我想找到以“on”结尾的id

谢啦!

id  stat    regdt
10001   ON  2020-06-29T01:00:00Z
10002   ON  2020-06-29T02:00:00Z
10004   ON  2020-06-29T07:00:00Z

http://sqlfiddle.com/#!9/7 c0f90/3


共1个答案

匿名用户

SELECT test.*
FROM test
JOIN ( SELECT id, MAX(regdt) regdt
       FROM test
       GROUP BY id ) max_regdt USING (id, regdt)
WHERE test.stat = 'ON';

子查询max_regdt获取每个ID的最后日期。 获取的值用于从源表的另一个副本中检索整行。

该查询假定不存在具有相同idregdt的重复行-如果存在,则将返回所有重复行。