SQL 当使用不存在的地方和 select 不同的子查询时,行不会从 table 中删除

SQL Rows are not deleted from table when using where not exists and select distinct subquery

我是 SQL 的新手,无法找到我做错了什么。我正在尝试删除在 2 个特定列中与其他行在同一 table 中具有匹配字段的行,以获得临时 table,以便只有一行保留相同的 ID 和年份,以便剩下的行是那一年那些 ID 的最大日期。

My table: 
ID                 Year                  Date
---------------------------------------------------- 
1                  2017                 01/05/2017 
1                  2017                 11/17/2017 
1                  2017                 08/07/2017 
1                  2016                 03/22/2017 
1                  2016                 04/01/2017 
2                  2017                 03/12/2017 
2                  2016                 02/03/2016 
2                  2016                 04/19/2016

期望的结果:

ID                 Year                  Date
---------------------------------------------------- 
1                  2017                 11/17/2017 
1                  2016                 04/01/2016 
2                  2017                 03/12/2017 
2                  2016                 04/19/2016

我有:

DELETE FROM #Temp 
WHERE NOT EXISTS (
         SELECT DISTINCT
                t1.ID, 
                t1.Year
        FROM #Temp AS t1, 
             #Temp AS t2
        WHERE t1.ID = t2.ID
        AND t1.Year <> t2.Year 
        GROUP BY t1.ID, t1.Year )

当我 运行 它时,没有任何内容被删除,但是当我删除前两行以测试将被删除的内容时,结果是正确的,所以我真的很困惑。我正在研究 MAX 函数,但希望这部分先起作用。

如有任何帮助,我们将不胜感激!我不知道它有什么问题。

with cte as 
(
    select row_number() over (partition by ID, Year order by date desc) as rn
)
delete * from cte where rn > 1;

另一种方法是使用 row_number() 函数根据 ID.. Year

查找重复记录
delete t from
(
    select *, row_number() over (partition by ID, [Year] order by date desc) rn from <table>
) t where t.rn > 1