星空网 > 软件开发 > 数据库

删除重复的记录

因是手动录入数据,所以经常会产生重复的数据,这时就需要删除多余的数据。

创建测试用表:

CREATE TABLE dupes(  id integer,  name varchar(10));INSERT INTO dupes VALUES(1, 'TOM');INSERT INTO dupes VALUES(2, 'ALLEN');INSERT INTO dupes VALUES(3, 'ALLEN');INSERT INTO dupes VALUES(4, 'SMITH');INSERT INTO dupes VALUES(5, 'SMITH');INSERT INTO dupes VALUES(6, 'SMITH');SELECT * FROM dupes;

删除重复的记录

可以看到“ALLEN”和“SMITH”这两个人的数据重复了,现在要求表中name重复的数据只保留一行,其他的删除。

删除数据有好几种方法,下面介绍三种方法。

 

方法一:通过name相同,id不同的方式来判断。

sql代码如下:

DELETE FROM dupes a WHERE EXISTS (SELECT 1     FROM dupes b     WHERE a.name = b.name      AND a.id > b.id);SELECT * FROM dupes;

执行结果如下:

删除重复的记录

 

方法二:用ROWID来代替其中的id。

sql代码如下:

DELETE FROM dupes a WHERE EXISTS (SELECT 1     FROM dupes b     WHERE a.name = b.name      AND a.ROWID > b.ROWID);

执行结果如下:

删除重复的记录

 

方法三:通过分析函数根据name分组生成序号,然后删除序号大于1的数据。

sql代码如下:

DELETE FROM dupes a WHERE ROWID IN (SELECT rid          FROM (SELECT ROWID as rid,                ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) AS seq              FROM dupes)         WHERE seq > 1);

执行结果和上面一样。




原标题:删除重复的记录

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流