2013-09-23 4 views
1

Мне нужно удалить stackID, которые находятся в ## BeDel из главной таблицы, используя @flow.Удаление строк из основной таблицы с использованием столбца таблицы Temp?

#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 [email protected] AND [email protected]@flow 

        FETCH NEXT FROM Rotation INTO @StackID 

        END 

ответ

1
delete MainTable 
from MainTable as m 
where 
    exists (select * from #BeDel as b where b.StackID = m.StackID) and 
    m.FLOWNAME = 'AAA' 
+0

Благодаря романский это работает удивительным – vision

Смежные вопросы