我的数据是:
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 的旧“标记”
如果您只想返回名称的最新行,您可以使用:
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)