我有一个名为 "votes" 的表格,其中包含以下列: voter
, election_year
, election_type
, party
。我需要删除所有重复的行,这些行是由 voter
和 election_year
组合而成的,但我不知道该如何操作。
我运行了以下命令:
WITH CTE AS(
SELECT voter,
election_year,
ROW_NUMBER()OVER(PARTITION BY voter, election_year ORDER BY voter) as RN
FROM votes
)
DELETE
FROM CTE where RN>1
基于另一个StackOverflow答案,但似乎这是特定于SQL Server的。我已经看到过使用唯一ID的方法,但是这个特定表格没有这种奢侈。我怎样可以采用上面的脚本来去除我需要的重复项?谢谢!
编辑:根据请求,创建了一个带有一些示例数据的表:
CREATE TABLE public.votes
(
voter varchar(10),
election_year smallint,
election_type varchar(2),
party varchar(3)
);
INSERT INTO votes
(voter, election_year, election_type, party)
VALUES
('2435871347', 2018, 'PO', 'EV'),
('2435871347', 2018, 'RU', 'EV'),
('2435871347', 2018, 'GE', 'EV'),
('2435871347', 2016, 'PO', 'EV'),
('2435871347', 2016, 'GE', 'EV'),
('10215121/8', 2016, 'GE', 'ED')
;
WITH .. AS
(公共表达式)和ROW_NUMBER() OVER (....)
。 "如何采用上述脚本以删除我需要的重复项?谢谢!"很难在没有表结构和示例数据的情况下进行判断。请查看https://stackoverflow.com/help/how-to-ask部分“**帮助其他人重现问题**”。 - Raymond Nijland