SQL 删除重复数据

创建测试表

CREATE TABLE emp(
	id serial2,		//表的的自增
	name VARCHAR,
	age VARCHAR,
	addr VARCHAR,
	opreate_time VARCHAR
	);

插入测试数据

INSERT INTO emp (name, age, addr, operate_time) VALUES('david', '20', '上海', '123400');
INSERT INTO emp (name, age, addr, operate_time) VALUES('david', '20', '上海', '123401');
INSERT INTO emp (name, age, addr, operate_time) VALUES('steve', '20', '上海', '123402');
INSERT INTO emp (name, age, addr, operate_time) VALUES('Tom', '18', '北京', '123403');
INSERT INTO emp (name, age, addr, operate_time) VALUES('Tom', '18', '北京', '123404');
INSERT INTO emp (name, age, addr, operate_time) VALUES('Jim', '23', '南京', '123405');
INSERT INTO emp (name, age, addr, operate_time) VALUES('lili', '19', '青岛', '123406');

若要保证 name、age、addr 这三个字段作为一个整体去重,方案如下:
第一种方案:(先分组后去重)

DELETE FROM emp m 
WHERE m.id not in (
SELECT MIN(t.id) 
FROM emp t 
GROUP BY t.name, t.age, t.addr
);

第二种方案:

DELETE From emp a
WHERE a.id <> (
SELECT MIN(b.id)
FROM emp b 
WHERE a.name = b.name AND a.age=b.age AND a.addr=b.addr
);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值