版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37155959/article/details/82317373
建表语句以及数据如下:
create table `staff` (
`id` bigint (20),
`name` varchar (60)
);
insert into `staff` (`id`, `name`) values('1','张三');
insert into `staff` (`id`, `name`) values('2','李四');
insert into `staff` (`id`, `name`) values('3','王五');
insert into `staff` (`id`, `name`) values('4','赵六');
insert into `staff` (`id`, `name`) values('5','王五');
insert into `staff` (`id`, `name`) values('6','王五');
insert into `staff` (`id`, `name`) values('7','李四');
insert into `staff` (`id`, `name`) values('8','赵六');
insert into `staff` (`id`, `name`) values('9','赵六');
删除一条记录,不考虑其他条件一:
DELETE
FROM
staff
WHERE id NOT IN
(SELECT id FROM (SELECT
id
FROM
staff
GROUP BY NAME) t );
删除一条记录,保留id最新值:
-- 删除重复值,只保留一条最小记录
DELETE
FROM
staff
WHERE NAME IN
(SELECT
NAME
FROM
(SELECT
NAME
FROM
staff t1
GROUP BY t1.name
HAVING COUNT(t1.name) > 1) t3)
AND id NOT IN
( SELECT id FROM (SELECT
MIN(t2.id) AS id
FROM
staff t2
GROUP BY t2.name
HAVING COUNT(t2.name) > 1) t4 );
– 删除重复值,只保留一条最大记录
-- 删除重复值,只保留一条最大记录
DELETE
FROM
staff
WHERE NAME IN
(SELECT
NAME
FROM
(SELECT
NAME
FROM
staff t1
GROUP BY t1.name
HAVING COUNT(t1.name) > 1) t3)
AND id NOT IN
( SELECT id FROM (SELECT
MAX(t2.id) AS id
FROM
staff t2
GROUP BY t2.name
HAVING COUNT(t2.name) > 1) t4 );