我有下表:
ONBackup表:
Contract FromDate Invoice Data
232 12/12/2017 123
232 14/02/2018 123
232 15/07/2018 123
232 14/02/2017 676
311 12/12/2017 881
Run Code Online (Sandbox Code Playgroud)
有很多"重复"的行,我的副本是发票号码相同的地方,即其他字段可以不同.
该表有140万行(大约一百万个重复),所以不确定下面是否会起作用,因为我感到厌倦了等待3个小时并计算,它必须比我更多的CPU饥饿.
DELETE FROM ONBackup
WHERE Invoice NOT IN
(
SELECT MIN(Invoice)
FROM ONBackup
GROUP BY Invoice
)
Run Code Online (Sandbox Code Playgroud)
有没有更快的方法来做到这一点?
使用row_number()功能:
delete b
from (select b.*, row_number() over (partition by b.invoice order by b.fromdate desc) as seq
from ONBackup b
) b
where seq > 1;
Run Code Online (Sandbox Code Playgroud)
这fromdate为每个invoices 留下了最新信息.
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |