Sql 删除关系表中的重复行
我在Sql 删除关系表中的重复行,sql,postgresql,Sql,Postgresql,我在PostgreSQL数据库中有一个关系表。 我想删除重复的行 我的桌子看起来像这样: idUser idFunction 1 1 2 1 3 1 3 1 4 1 4 1 4 2 我想要这个: idUser idFunction 1 1 2 1 3 1 4
PostgreSQL
数据库中有一个关系表。
我想删除重复的行
我的桌子看起来像这样:
idUser idFunction
1 1
2 1
3 1
3 1
4 1
4 1
4 2
我想要这个:
idUser idFunction
1 1
2 1
3 1
4 1
4 2
我已经试过了:
DELETE TOP (SELECT COUNT(*) -1 FROM user_function
WHERE idUser IN
(SELECT idUser FROM user_function
GROUP BY idUser, idFunction
HAVING COUNT(*) > 1)
AND idFunction IN
(SELECT idFunction FROM user_function
GROUP BY idUser, idFunction
HAVING COUNT(*) > 1))
FROM user_function
WHERE idUser IN
(SELECT idUser FROM user_function
GROUP BY idUser, idFunction
HAVING COUNT(*) > 1)
AND idFunction IN
(SELECT idFunction FROM user_function
GROUP BY idUser, idFunction
HAVING COUNT(*) > 1)
但是PostgreSQL
告诉我在“TOP”中有一个错误
如何在PostgreSQL
中删除关系表中的重复行?我建议重新创建该表:
create table temp_user_function as
select distinct idUser, idFunction
from user_function;
truncate table user_function; -- backup first!!!
insert into user_function (idUser, idFunction)
select idUser, idFunction
from temp_user_function;
修复数据后,应将该对声明为唯一的。我建议只重新创建表:
create table temp_user_function as
select distinct idUser, idFunction
from user_function;
truncate table user_function; -- backup first!!!
insert into user_function (idUser, idFunction)
select idUser, idFunction
from temp_user_function;
修复数据后,应将该对声明为唯一的