如何删除带有日期条件的SQL中的重复行?

0 sql duplicates

我的数据是:

ID  Name    date
1   Ben 2017-01-21
2   Mark    2017-01-20
3   Mark    2017-01-21
4   Ell 2017-01-19
Run Code Online (Sandbox Code Playgroud)

应该是

ID  Name    date
1   Ben 2017-01-21
3   Mark    2017-01-21
4   Ell 2017-01-19
Run Code Online (Sandbox Code Playgroud)

必须删除 ID 为 2 的旧“标记”

Gor*_*off 7

如果您只想返回名称的最新行,您可以使用:

select t.*
from t
where t.date = (select max(t2.date) from t t2 where t2.name = t.name);
Run Code Online (Sandbox Code Playgroud)

在大多数数据库中,您可以对以下操作使用类似的逻辑delete

delete from t
    where t.date < (select max(t2.date) from t t2 where t2.name = t.name)
Run Code Online (Sandbox Code Playgroud)