【问题标题】:Deleting rows from the main table using a column of Temp table?使用 Temp 表的列从主表中删除行?
【发布时间】:2013-09-28 17:53:34
【问题描述】:

我必须使用 @flow 从主表中删除 ##BeDel 中的 stackID。

#BeDel

StackID
45
56
48
56
49


DECLARE @flow int
@flow=(SELECT FLOWID FROM MainTable WHERE FLOWNAME='AAA')

MainTable

StackID   VALUE  FLOWID   FLOWNAME   
67         34     1          AAA
45         56     1          AAA
56         22     1          AAA
34         56     1          ZZZ

我已经使用过游标,但出于性能原因我不想使用游标。

我的光标代码是

DECLARE Rotation CURSOR 
FOR 
                  SELECT StackID FROM #BeDel
                   DECLARE  StackID INT

                   OPEN Rotation
                   FETCH NEXT FROM Rotation INTO @StackID
                   While @@FETCH_STATUS = 0
                   BEGIN
                   DELETE MainTable
                   WHERE StackID=@StackID AND FLOWID=@@flow

                   FETCH NEXT FROM Rotation INTO @StackID 

                   END

【问题讨论】:

    标签: sql-server tsql sql-server-2008-r2 cursor sql-delete


    【解决方案1】:
    delete MainTable
    from MainTable as m
    where
        exists (select * from #BeDel as b where b.StackID = m.StackID) and
        m.FLOWNAME = 'AAA'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 2021-05-19
      相关资源
      最近更新 更多