T-SQL: выбор строк для удаления с помощью объединений - PullRequest
476 голосов
/ 13 января 2009

Сценарий:

Допустим, у меня есть две таблицы, TableA и TableB. Первичный ключ TableB представляет собой один столбец (BId) и является столбцом внешнего ключа в TableA.

В моей ситуации я хочу удалить все строки в TableA, которые связаны с конкретными строками в TableB: можно ли это сделать с помощью объединений? Удалить все строки, извлеченные из объединений?

DELETE FROM TableA 
FROM
   TableA a
   INNER JOIN TableB b
      ON b.BId = a.BId
      AND [my filter condition]

Или я вынужден сделать это:

DELETE FROM TableA
WHERE
   BId IN (SELECT BId FROM TableB WHERE [my filter condition])

Причина, по которой я спрашиваю, заключается в том, что мне кажется, что первый вариант был бы гораздо более эффективным при работе с большими таблицами.

Спасибо!

Ответы [ 11 ]

0 голосов
/ 22 февраля 2016

Более простой способ:

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