首页 > 解决方案 > 识别两个表之间的重复项并删除创建时间较早的表

问题描述

我有两张桌子 T1 和 T2。并非两个表上的所有列都相同,但两个表都有 Name 和 Date 列。

我想检查 T1 和 T2 中名称的重复项,但从表中删除日期较旧的条目。

例如:T1:

Name Date
A1   2012-09-09
A2   2018-08-08
A3   2015-04-06

T2:

Name  Date
A1    2019-07-07
A2    2016-05-05
A4    2015-09-06

我想从表 1 中删除 A1,从表 2 中删除 A2。

标签: sql-servertsql

解决方案


我们可以尝试使用两个存在删除查询:

DELETE
FROM T1 t1
WHERE EXISTS (SELECT 1 FROM T2 t2 WHERE t1.Name = t2.Name AND t2.Date > t1.Date);

DELETE
FROM T2 t2
WHERE EXISTS (SELECT 1 FROM T1 t1 WHERE t1.Name = t2.Name AND t1.Date > t2.Date);

推荐阅读