首页 > 解决方案 > 行集的 SQL 删除语句

问题描述

我需要通过使用 SQL(status =Loaded仅)比较表 2 来删除行集表 1(4 行集),否则保留行集IG

例如,表 1 中的 IG 10 数据将被删除,IG 60 数据将保持与该 IG 未加载对应的所有状态相同。

在此处输入图像描述

标签: sqlsql-servertsqlsql-delete

解决方案


您可以尝试以下解决方案。内部SELECT获取所有IG未成功加载的值。它DELETE本身会删除该IG值不在此列表(未成功加载的)IG值中的所有行。

DELETE FROM Table1 WHERE NOT IG IN (
  SELECT IG FROM Table2 WHERE Status <> 'Loaded'
)

为确保删除正确的行,您可以SELECT先使用以下内容:

SELECT * FROM Table1 WHERE NOT IG IN (
  SELECT IG FROM Table2 WHERE Status <> 'Loaded'
)

dbfiddle.uk 上的演示


推荐阅读