如果行不受约束影响,则删除SQL

Spe*_*nce 5 sql entity-relationship

首先请注意,我已经看到了这个问题:使用内部联接删除TSQL

我有一个大表和几个外键关系,每个都有给定年龄的数据.我们需要定期删除比给定数据更旧的数据,以阻止数据库无限制地增长.

我正在编写一个查询,如果您按照给定的参数将从星上的每个点删除(不幸的是,这些是可配置的,并且在表之间是不同的).

在第一次删除之后,我有一个中央表,我担心我正在做两次尝试删除的工作,就像删除数据库检查条件一样.我有一套:

AND NOT EXISTS
(SELECT key 
FROM table 
WHERE table.key = centretable.key)
Run Code Online (Sandbox Code Playgroud)

哪个TSQL正在进行正确的反半连接,并在索引上做得很好.问题是它创建了一个要删除的东西列表,然后在执行删除时再次执行相同的检查.

我想我的问题是是否有一个按行删除,(我不会在游标中这样做,因为我知道它会有多慢),但你会认为这样的关键字会存在,我没有'虽然有幸找到了它.

pjp*_*pjp 0

如果您重复使用要删除的相同内容列表,那么您可以考虑将要删除的键插入到临时表中,然后在第二个查询中使用它。

SELECT Key, ...
INTO #ToDelete
FROM Table T
WHERE ...
Run Code Online (Sandbox Code Playgroud)

然后像这样的事情

...
LEFT OUTER JOIN #ToDelete D
ON T.Key=D.Key
WHERE D.Key IS NULL

DROP #ToDelete
Run Code Online (Sandbox Code Playgroud)