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;