SQL 行集的删除语句

SQL delete statement for a rowset

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

例如,来自TABLE 1 的IG 10 数据将被删除,而IG 60 数据将保持与未加载该IG 对应的所有状态。

您可以尝试以下解决方案。内部 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'
)

demo on dbfiddle.uk

试试这个

delete From [TABLE 1]
where IG in
(
Select IG from [TABLE 2] a where not exists(Select 1 From [TABLE 2] b where a.IG  = b.IG and Status not in ('Loaded') )
)

您可以尝试以下查询

DELETE FROM TABLE1 WHERE IG NOT IN (SELECT IG FROM TABLE2 WHERE STATUS = 'ERROR')

使用 NOT IN 子句:

delete from TB1 where not IG in  (
  select IG from TB2 where status <> 'Loaded'
)