Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server—基于表联接条件删除记录的快速方法_Sql_Sql Server_Tsql - Fatal编程技术网

SQL Server—基于表联接条件删除记录的快速方法

SQL Server—基于表联接条件删除记录的快速方法,sql,sql-server,tsql,Sql,Sql Server,Tsql,通常我会像这样截断数据: truncate table DST.BreaksDST select dstid, dst.breakid from DST.BreaksDST dst join base.breaks b on dst.BreakId = b.BreakId where b.source = 'DST' 但是,我只需要删除与另一个表的连接中包含“DST”源的数据 我的SELECT语句如下所示: truncate table DST.B

通常我会像这样截断数据:

truncate table DST.BreaksDST
select 
    dstid, dst.breakid 
from 
    DST.BreaksDST dst 
join 
    base.breaks b on dst.BreakId = b.BreakId
where 
    b.source = 'DST'
但是,我只需要删除与另一个表的连接中包含“DST”源的数据

我的SELECT语句如下所示:

truncate table DST.BreaksDST
select 
    dstid, dst.breakid 
from 
    DST.BreaksDST dst 
join 
    base.breaks b on dst.BreakId = b.BreakId
where 
    b.source = 'DST'
所以我知道如果我使用像DELETE这样的东西。。。。在中选择dst.breakid

那会很慢,对吧

有什么更好的方法吗?

您可以使用DELETE[FROM]。。。从加入:

请注意,doubleFROM不是一个错误:

DELETE FROM dst
FROM BreaksDST dst 
JOIN breaks b
   ON dst.BreakId = b.BreakId
WHERE b.source = 'DST';
您可以使用DELETE[FROM]。。。从加入:

请注意,doubleFROM不是一个错误:

DELETE FROM dst
FROM BreaksDST dst 
JOIN breaks b
   ON dst.BreakId = b.BreakId
WHERE b.source = 'DST';

作为参考,这是要使用的语法,您可以用更新dst SET dst.x=b.y替换DELETE dst,并使用相同的连接语法进行更新。@JoelCoehoorn实际上是双精度的。但感谢您的编辑,我使其更加明确。作为参考,这是要使用的语法,您可以用更新dst SET dst.x=b.y替换删除dst,并使用相同的连接语法进行更新。@JoelCoehoorn实际上是有意使用的。但是谢谢你的编辑,我让它更明确了。这真的取决于你删除了多少表。如果删除的表的百分比很高,则可以更快地选择要保留在新表中的记录,删除原始表并重命名新表。如果不是,那么DELETE-FROM-internal-JOIN语法工作得很好,这实际上取决于要删除的表的数量。如果删除的表的百分比很高,则可以更快地选择要保留在新表中的记录,删除原始表并重命名新表。如果不是,则DELETE-FROM-internal-JOIN语法工作正常