SQL Server语言 - 如何在select查询中删除重复项?



如何根据多个参数从select查询中删除重复的记录?

我有一个返回这些的复杂查询,我需要删除基于IdRow, IdAudience和IdAb的重复项,所以在下面的情况下,我需要删除id 1和3:

<表类> Id IdRow IdAudience IdAb 数量 tbody><<tr>1空空283612空空283613560540空空774560540空空77

您可以使用一个简单的聚合方法:

SELECT MAX(Id) AS Id, IdRow, IdAudience, IdAb, Quantity
FROM yourTable
GROUP BY IdRow, IdAudience, IdAb, Quantity
ORDER BY 1;

假设给定一组2个或更多的副本,您希望保留具有最大Id值的单个记录。

当然也可以使用流行的ROW_NUMBER()函数来过滤掉重复项:

;WITH CTE AS
(
SELECT * , ROW_NUMBER() OVER(PARTITION BY IdRow, IdAudience,IdAb ORDER BY Id DESC) RN
FROM yourTable
)
DELETE FROM CTE 
WHERE RN > 1

可以在子查询中这样写

delete from yourtable where Id not in 
(
SELECT top 1000 MAX(Id) AS Id
FROM yourtable
GROUP BY IdRow, IdAudience, IdAb, Quantity
ORDER BY Id
)

相关内容

  • 没有找到相关文章

最新更新