Ответов (5)5
Решение
0
Что ж, в какой-то момент вам нужно будет проверить все столбцы - можно также присоединиться ...
DELETE a
FROM a -- first table
INNER JOIN b -- second table
ON b.ID = a.ID
AND b.Name = a.Name
AND b.Foo = a.Foo
AND b.Bar = a.Bar
Это должно сработать ... также есть CHECKSUM(*)
, но это только помогает - вам все равно нужно проверить фактические значения, чтобы предотвратить конфликты хешей.
0
Я думаю, что приведенный ниже псевдокод справится с этим ..
DELETE FirstTable, SecondTable
FROM FirstTable
FULL OUTER JOIN SecondTable
ON FirstTable.Field1 = SecondTable.Field1
... continue for all fields
WHERE FirstTable.Field1 IS NOT NULL
AND SecondTable.Field1 IS NOT NULL
Сообщение Криса INTERSECT гораздо более элегантно, и я буду использовать его в будущем вместо того, чтобы записывать все критерии внешнего соединения :)
0
Если вы используете SQL Server 2005, вы можете использовать пересечение :
delete * from table1 intersect select * from table2