请叫我头头哥

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

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;

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


作  者:请叫我头头哥
出  处:http://www.cnblogs.com/toutou/
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

posted @ 2020-01-28 16:32  请叫我头头哥  阅读(12716)  评论(0编辑  收藏  举报
//Setting ico for cnblogs