MySQL单列去重
在平时开发中,我们会碰到对表的某一列数据去重的需求场景,如下student表
建表语句如下
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
1
2
3
4
5
6
插入数据
INSERT INTO `test`.`student` (`id`, `name`, `age`) VALUES (‘1’, ‘张三’, ’23’);
INSERT INTO `test`.`student` (`id`, `name`, `age`) VALUES (‘2’, ‘李四’, ’21’);
INSERT INTO `test`.`student` (`id`, `name`, `age`) VALUES (‘3’, ‘李四’, ’21’);
1
2
3
我们可以看到,在student表中,name为李四的记录有两条,而两条记录除了主键 id 不同,其余字段的值都一样,此时我们在查询时,只需要保留其中一条记录即可,也就是说对 id 这一列进行单列去重,SQL语句如下
select max(id) as id
,name
,age
from student
group by name , age
1
2
3
4
5
上面查询结果中李四的记录保留的是较大值id,如果要保留较小值id,可将max改为min函数即可
select min(id) as id
,name
,age
from student
group by name , age
1
2
3
4
5
———————
作者:gavin.liao
来源:CSDN
原文:https://blog.csdn.net/u012693016/article/details/93209268
版权声明:本文为博主原创文章,转载请附上博文链接!