SQL按照某一列数据去重并显示整行信息

时间:2022-04-24 04:26:13

mysql按照某一字段去重,并显示其他字段信息。有时候会有一些这样的需求,就是按照sql中的某一列值去重,还要显示其他字段的信息。用distinct进行去重时不能显示整行的信息,对这种需求显然难以满足。

v准备工作

1.0 创建测试

CREATE TABLE `logtest` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `msg` varchar(500) NOT NULL,
    `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into `logtest` (msg) values(bbbbbbbbbbbbb);
select * from logtest;

1.1 表中所有数据

SQL按照某一列数据去重并显示整行信息

vGroup by和Max写法

需求背景

按照时间升序在日志表中取出不msg不重复的前3条数据

select * from logtest
where id in (select Max(id) from logtest group by msg)
order by create_time asc limit 3;
评论( 0