我不确定这里出了什么问题:
DELETE t1 FROM modified_client_config AS t1, modified_client_config AS t2
WHERE t1.Date < t2.Date AND t1.Client = t2.Client AND t1.Server = t2.Server;
提问前搜索了一下,发现用别名删除时有一条规则:
DELETE f FROM dbo.foods AS f WHERE f.name IN (...)
那么,是否可以将此语法用于别名?
我知道这两个别名是同一张表,但我想我的同事写这个是为了仅在 date1 < date2 时删除。
最佳答案
您似乎只想保留 client
和 server
的每个组合的最新行。
您可以使用相关的子选择来做到这一点:
delete from modified_client_config as t1
where exists (select *
from modified_client_config as t2
where t2.date > t1.date
and t2.client = t1.client
and t2.server = t1.server);
关于sql - 在同一查询的两个表上使用别名删除[Postgres 9.5],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51930521/