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 表中所有数据
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;
原文地址:https://www.cnblogs.com/toutou/p/sql_distinct.html
时间: 2024-10-06 15:38:08