张尧洪 发表于 2021-5-8 11:19:31

mysql,求教数据分组后取第一条的问题

现有表数据如下,需要按照column1,column2进行分组,然后取column4最新的一条,其中column4有最新时间相同的,这种情况下如何取其中一条呢?谢谢。

column1,column2,column3,column4
1,2,3,2019-06-01:00:00:00
1,2,4,2019-06-01:00:00:00
5,6,7,2019-06-01:00:03:00
8,9,10,2019-06-01:01:00:00
8,9,11,2019-06-01:01:00:00

贾淳骇 发表于 2021-5-11 07:21:51

SELECT column1,column2,max(column4)
from table_column
group by column1,column2

汤辉 发表于 2021-5-13 22:18:08

先分组,在主键倒排序,取第一条
select 字段 from table_column group by column1, column2 order by 主键 desc limit 1;

李美林 发表于 2021-5-17 22:06:15

SELECT column1,column2,max(column3) ,max(column4)
from table_column
group by column1,column2

工农兵子弟 发表于 2021-5-24 19:09:38

select * from (
select a.*,
if(@column1=column1 and @column2=column2,@rownum:=@rownum+1,@rownum:=1) AS Rn,
@column1:=column1 ncolumn1,
@column2:=column2 ncolumn2
from table_column a,(select@rownum:=0,@column1:=null,@column2:=null) b
) c
where rn=1

建桥 发表于 2021-5-29 14:31:08

应该是要分组排序取第一条
select t1.* from
(SELECT column1,column2,max(column3) column3,max(column4) column4 from table_column group by column1,column2) t1
where 1>(select count(*) from(SELECT column1,column2,max(column3) column3,max(column4) column4 from table_column group by column1,column2) t2where t1.column1=t2.column1,t1.column2=t2.column2 and t1.column4<t2.column4)

福建违章处理收分 发表于 2021-6-2 13:23:55

最后的 limit 1是作用于全部结果,所以最后只取到一条数据,是不对的,你自己实验下。我要取的是分组后取每组里的最新一条,不是全部结果里取一条。
页: [1]
查看完整版本: mysql,求教数据分组后取第一条的问题