SQL Server -如何删除选择查询中的重复项?

9rnv2umw  于 2022-12-26  发布在  SQL Server
关注(0)|答案(3)|浏览(150)

如何从选择查询中删除基于多个参数的重复记录?
我有一个返回这些内容的复杂查询,我需要根据IdRow、IdAudience和IdAb删除重复内容,因此在下面的示例中,我需要删除Id 1和Id 3:
| 身份证|标识行|标识受众|身份抗体|数量|
| - ------|- ------|- ------|- ------|- ------|
| 1个|零|零|小行星2836| 1个|
| 第二章|零|零|小行星2836| 1个|
| 三个|小行星560540|零|零|七十七|
| 四个|小行星560540|零|零|七十七|
但是如何从选择查询中执行此操作呢?

mutmk8jj

mutmk8jj1#

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

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

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

8mmmxcuj

8mmmxcuj2#

当然,您也可以使用非常流行的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
rhfm7lfc

rhfm7lfc3#

您可以按如下所示将其写入子查询中

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
)

相关问题