pg中删除表中重复记录的SQL
来源:互联网 发布:js中获取父节点 编辑:程序博客网 时间:2024/06/07 07:07
highgo=# select * from test;
id | name
----+------
1 |
2 |
3 |
3 |
(4 rows)
highgo=# delete from test a where a.ctid <> (select min(b.ctid) from test b where a.id=b.id);
DELETE 1
highgo=# select * from test;
id | name
----+------
1 |
2 |
3 |
(3 rows)
上面的语句在表test的记录比较多时,效率会比较差,这时可以使用下面更高效的语句删除重复的记录:
highgo=# insert into test values (3);
INSERT 0 1
highgo=# select * from test;
id | name
----+------
1 |
2 |
3 |
3 |
(4 rows)
highgo=# delete from test where ctid = any(array(select ctid from (select row_number() over (partition by id),ctid from test) x where x.row_number > 1));
DELETE 1
highgo=# select * from test;
id | name
----+------
1 |
2 |
3 |
(3 rows)
id | name
----+------
1 |
2 |
3 |
3 |
(4 rows)
highgo=# delete from test a where a.ctid <> (select min(b.ctid) from test b where a.id=b.id);
DELETE 1
highgo=# select * from test;
id | name
----+------
1 |
2 |
3 |
(3 rows)
上面的语句在表test的记录比较多时,效率会比较差,这时可以使用下面更高效的语句删除重复的记录:
highgo=# insert into test values (3);
INSERT 0 1
highgo=# select * from test;
id | name
----+------
1 |
2 |
3 |
3 |
(4 rows)
highgo=# delete from test where ctid = any(array(select ctid from (select row_number() over (partition by id),ctid from test) x where x.row_number > 1));
DELETE 1
highgo=# select * from test;
id | name
----+------
1 |
2 |
3 |
(3 rows)
阅读全文
0 0
- pg中删除表中重复记录的SQL
- sql中删除重复记录的方法
- SQL中删除重复记录
- SQL中删除重复记录
- 【经典SQL】删除表中重复的记录
- 查找、删除表中重复的记录
- 如何查找、删除表中重复的记录
- 如何删除表中重复的记录?
- 如何查找、删除表中重复的记录
- 删除表中重复的记录
- 如何查找、删除表中重复的记录
- 删除表中重复的记录
- 删除表中重复的记录
- 删除表中重复的记录!
- 删除表中重复记录的办法
- 删除表中多余的重复记录
- 删除表中重复的记录
- 删除数据库表中重复的记录
- netty EventLoop write() 源码分析(二)
- ARM Cortex-A平台NEON指令的编译和优化
- 开启TCP BBR拥塞控制算法
- 查看是否关闭iphone版本通道(回退版本时)
- HBase Client客户端数据管理软件
- pg中删除表中重复记录的SQL
- blueZ-5.37 交叉编译可以在arm上运行
- HTTPS模拟表单发送参数和图片
- linux的学习:安装环境
- FFMPEG解码多线程
- 异常之You have an error in your SQL syntax
- SVN更新代码时报错:org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir
- c++好用的json库 jsoncpp
- js中的“==”和“===”比较、以及强制类型转换的方法