微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除比较两个表的数据

如何解决删除比较两个表的数据

我有两个表:表A和表B。两个表都有一列,例如名称,位置,级别。表A是初始表,表B是表A的更新版本。这意味着表B中将存在新数据。我想编写一个查询,如果表A中存在数据,则从表B中删除数据,但是不在表B中。如果表中有新的数据行,我不想从表B中删除数据。
我的方法就是这样

Delete From TableB Where Exist(
SELECT * FROM dbo.TableB AS TB
EXCEPT 
SELECT * FROM dbo.TableA as TA)

这将删除数据,但如果它也是新插入的数据,它也会从表B中删除数据。任何建议都值得赞赏。

解决方法

DELETE FROM TableB
WHERE EXIST(
  SELECT 1
  FROM TableA 
  WHERE TableA.Name = Name AND TableA.Location = Location AND TableA.Level = Level 
)

如果TableA具有主键,则仅在WHERE条件下检查此键就足够了。此外,如果您拥有此主键(例如Name),则可以这样操作:

DELETE FROM TableB
WHERE Name IN (SELECT Name FROM TableA)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。