sql - 删除 SQL Server 中重复的最大行
问题描述
我想删除 SQL 中的重复行。我的查询可以删除 的重复行RN > 1
,但我想删除max(RN)
:
WITH CTE AS(
SELECT [col1], [col2], [col3]
RN = ROW_NUMBER()OVER(PARTITION BY [col1], [col2] ORDER BY [col1], [col2])
FROM dbo.Table1
)
DELETE FROM CTE WHERE RN > 1
解决方案
只需将分区更改为与当前顺序相反,然后仅删除具有第一行号的记录:
WITH CTE AS (
SELECT [col1], [col2], [col3]
RN = ROW_NUMBER() OVER (PARTITION BY [col1], [col2] ORDER BY [col1] DESC, [col2] DESC)
FROM dbo.Table1
)
DELETE FROM CTE WHERE RN = 1;
推荐阅读
- terminal - 终端在 JupyterLab Launcher 中不可用
- c++ - 关于 Sentinel 循环 C++ 的建议
- java - 同一个包中的两个类不能一起工作
- python - .aspx 网站网页抓取使用 python
- reactjs - How do I render the following code in the render function?
- c# - Tracking down unhandled exceptions in Blazor Webassembly
- maven - Maven package without clean creates shaded jar
- latex - Latex equations in Final Cut Pro X or Motion 5
- docker - Name of Docker Image changes after hitting Enter when trying to run on VS Code
- d3.js - 在时间尺度上删除“边缘刻度”