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;

插入数据

INSERT INTO `student` (`id`, `name`, `age`) VALUES ('1', '张三', '23');
INSERT INTO `student` (`id`, `name`, `age`) VALUES ('2', '李四', '21');
INSERT INTO `student` (`id`, `name`, `age`) VALUES ('3', '李四', '21');

图1.student表
我们可以看到,在student表中,name为李四的记录有两条,而两条记录除了主键 id 不同,其余字段的值都一样,此时我们在查询时,只需要保留其中一条记录即可,也就是说对 id 这一列进行单列去重,SQL语句如下

select max(id) as id 
,name 
,age 
from student 
group by name , age

MySQL单列去重_第1张图片
上面查询结果中李四的记录保留的是较大值id,如果要保留较小值id,可将max改为min函数即可

select min(id) as id 
,name 
,age 
from student 
group by name , age

MySQL单列去重_第2张图片

你可能感兴趣的:(MySQL)