SQL Server Сравнение курсоров - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть 2 курсора, в котором курсор 1 имеет select * from table 1, а курсор 2 имеет select * from table 2. Мне нужно сравнить 2 курсора, и если выбранная строка в курсоре 1 не равна выбранной строке курсора 2, то я хочу удалить эту выбранную строку из таблицы 2. Пожалуйста, помогите мне, как это сделать?

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Вы можете использовать EXCEPT для идентификации измененных строк.

;WITH DirtyRows AS
(
    SELECT * FROM [Table 1]
    EXCEPT
    SELECT * FROM [Table 2]
)
DELETE [Table 2]
WHERE EXISTS
(
    SELECT * FROM DirtyRows
    WHERE DirtyRows.Id = [Table 2].Id
)
1 голос
/ 02 ноября 2011

Зачем вам это делать с курсорами? Если я вас правильно понял, вы можете просто сделать:

DELETE B
FROM table1 A
INNER JOIN table2 B
ON A.Id = B.Id
WHERE A.column1 <> B.column1 OR A.column2 <> B.Column2 ....

или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...