Запрос на удаление SQL Server, включающий две таблицы - PullRequest
5 голосов
/ 13 августа 2011

Итак, у меня есть таблицы A и B в SQL Server и столбцы a и b соответственно. Я хочу сделать следующее в команде псевдо-запроса, но я не могу понять это.

Я хочу

DELETE FROM A 
WHERE a < 100 "and only if these selected (for deletion) values don't exist in column b in table B"

Причина в том, что я пытаюсь удалить некоторые данные из таблицы A, но из-за ошибки появляется сообщение о наличии ограничений между значениями в A.a и B.b.

Включает ли это псевдонимы? Это сбивает с толку ..

1 Ответ

11 голосов
/ 13 августа 2011

Попробуйте, если вы используете SQL Server 2005 или новее:

DELETE FROM TableA
WHERE a < 100 AND 
a NOT IN (SELECT B FROM TableB)

Для SQL Server 2000 это должно работать:

DELETE ta
FROM TableA as ta
LEFT JOIN TableB as tb
ON ta.a = tb.b
WHERE ta.a < 100 AND  tb.b IS NULL
...