从相当大的SQL Server表中删除重复行的最佳方法是什么(即300,000多行)?
当然,由于RowID身份字段的存在,行不会是完美的重复.
MyTable的
RowID int not null identity(1,1) primary key,
Col1 varchar(20) not null,
Col2 varchar(2048) not null,
Col3 tinyint not null
Run Code Online (Sandbox Code Playgroud) 我有一个表“内容”有以下的列:
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
Run Code Online (Sandbox Code Playgroud)
基于另一个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', …Run Code Online (Sandbox Code Playgroud) 我有一个包含 3 列(id、金额、时间)的表。该表根据id升序排列。我想删除除第一个之外在金额列中具有相同值的所有连续行。
例如:
id: 12,15,16,17,19,22
amount: 555,546,546,53,53,500
time:
Run Code Online (Sandbox Code Playgroud)
回答:
id:12,15,17,22 amount: 555,546,53,500 time:
Run Code Online (Sandbox Code Playgroud)
只要连续行在金额列中具有相同的值,连续行的时间列就相同。我在 SO 上搜索但找不到类似的问题