暂无图片
postgresql没有主键,如何把两条一样的记录删掉其中一条?
我来答
分享
暂无图片 匿名用户
postgresql没有主键,如何把两条一样的记录删掉其中一条?


数据导出之后就会有两条记录,直接SUM就会重复

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
JiekeXu
暂无图片

找个测试库试试 ctid
参考:https://www.cnblogs.com/lottu/p/5613098.html

jiekexu=# select * from t;
 id |         name         | age 
----+----------------------+-----
  1 | JiekeXu              |  18
  1 | JiekeXu              |  18
  2 | Jieke                |  20
  2 | Jieke                |  20
(4 rows)

jiekexu=# delete from t where ctid not in (select min(ctid) from t group by id);
DELETE 2
jiekexu=# select * from t;
 id |         name         | age 
----+----------------------+-----
  1 | JiekeXu              |  18
  2 | Jieke                |  20
(2 rows)

jiekexu=# insert into  t values(2,'Jieke',20);
INSERT 0 1
jiekexu=# select ctid,* from t;
 ctid  | id |         name         | age 
-------+----+----------------------+-----
 (0,1) |  1 | JiekeXu              |  18
 (0,3) |  2 | Jieke                |  20
 (0,5) |  2 | Jieke                |  20
(3 rows)

jiekexu=# select min(ctid) from t group by id;
  min  
-------
 (0,3)
 (0,1)
(2 rows)

jiekexu=# delete from t where ctid not in (select min(ctid) from t group by id);
DELETE 1
jiekexu=# select ctid,* from t;
 ctid  | id |         name         | age 
-------+----+----------------------+-----
 (0,1) |  1 | JiekeXu              |  18
 (0,3) |  2 | Jieke                |  20
(2 rows)
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏