通常我会这样截断数据:
truncate table DST.BreaksDST
但是,我只需要删除连接到另一个表的数据中包含“ DST”源的数据
我的SELECT
语句如下:
select
dstid, dst.breakid
from
DST.BreaksDST dst
join
base.breaks b on dst.BreakId = b.BreakId
where
b.source = 'DST'
所以我知道,如果我使用DELETE .... IN (select dst.breakid .....)
那会非常慢,对吧?
还有什么更好的方法?
答案 0 :(得分:5)
您可以使用DELETE [FROM] ... FROM JOIN
:
DELETE dst
FROM DST.BreaksDST dst
JOIN base.breaks b
ON dst.BreakId = b.BreakId
WHERE b.source = 'DST';
请注意,double FROM
不是错误:
DELETE FROM dst
FROM BreaksDST dst
JOIN breaks b
ON dst.BreakId = b.BreakId
WHERE b.source = 'DST';