Sql server 删除重复项,但SQL Server中只保留日期较旧的项
我有一个名为Sql server 删除重复项,但SQL Server中只保留日期较旧的项,sql-server,Sql Server,我有一个名为dbo.Inbox的表,它有4列:[Id],[UserId],[Email],[CreationDate] 我正在使用以下SQL查询删除[UserId]和[Email]相同的行。但是,它会删除具有较旧的[CreationDate]的行 WITH cte AS ( SELECT Id, UserId, Email, ROW_NUMBER
dbo.Inbox
的表,它有4列:[Id]
,[UserId]
,[Email]
,[CreationDate]
我正在使用以下SQL查询删除[UserId]
和[Email]
相同的行。但是,它会删除具有较旧的[CreationDate]
的行
WITH cte AS (
SELECT
Id,
UserId,
Email,
ROW_NUMBER() OVER(
PARTITION BY
UserId,
Email
ORDER BY
UserId,
Email
) row_num
FROM
Inbox
)
DELETE FROM cte
WHERE row_num > 1;
我应该如何更改上述查询,以便在删除重复的行时,只保留较旧的
[CreationDate]
行?您需要按CreationDate降序排列行:
WITH cte AS (
SELECT
Id,
UserId,
Email,
ROW_NUMBER() OVER(
PARTITION BY
UserId,
Email
ORDER BY
CreationDate DESC
) row_num
FROM
Inbox
)
DELETE FROM cte
WHERE row_num > 1;