sql - 在同一个查询的两个表上使用别名删除[Postgres 9.5]
问题描述
我不确定这里有什么问题:
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);
推荐阅读
- javascript - 为什么以下简单方法在 Javascript 中返回 NaN(不是数字)?
- browser - Web 控制台 - 获取所有链接 - 需要帮助
- docker - 如何在 docker 容器中使用 docker 卷中的文件
- angular - RxJS 等待 observable 然后创建另一个 observable,依此类推
- python - 为什么此 Numba 函数中未使用此变量?
- graph - 使用 Doxygen 为特定函数创建调用图
- python - 使用 sklearn LinearRegression 拟合方法时子进程(使用 python 多处理)挂起
- python - 如何打印文本文件直到它与字符串匹配
- java - java和c#之间是否有共享的加密/解密方法?
- linux-kernel - 用于 netdev 触发源的设备树配置,用于根据链接状态控制 LED