我正在进行一个表测试,其中包含以下数据,并且我想删除trsid 124,并且我的数据库中有数百万个条目,这只是一个方案。概念是从表中删除重复的条目
-------------------------------------------- TrsId | ID | Name | -------------------------------------------- 123 | 1 | ABC | 124 | 1 | ABC |
我正在尝试类似的东西
delete from test select T.* from ( select ROW_NUMBER() over (partition by ID order by name) as r, Trsid, ID, name from test ) t where r = 2
即使我更新对我来说没问题的查询
update test set id=NULL select T.* from ( select ROW_NUMBER() over (partition by ID order by name) as r, Trsid, ID, name from test ) t where r = 2
但是,如果我同时运行此查询,它将删除表测试中的所有记录。如果我更新它,则更新两个记录。我不知道我在做什么错
WITH cte AS ( SELECT ROW_NUMBER() OVER(PARTITION by ID ORDER BY name) AS Row FROM test ) DELETE FROM cte WHERE Row > 1