удаление с использованием левого соединения и табличной переменной - PullRequest
1 голос
/ 31 марта 2009

Возможно, мне не хватает скобки или чего-то еще, но мне трудно удалить строки из табличной переменной, к которой я оставляю присоединение, и ищу ключ, к которому присоединяюсь. Если это имеет значение, то я от этого избавляюсь. Проблема в том, что я не могу получить запрос на анализ. Есть идеи?

объявить @MrTemp ( key1 int , key2 int )

вставить в @MrTemp выберите ключ1, ключ2 из ASourceTable

удалить
от @MrTemp mt оставьте присоединиться к ARealTable art на mt.key1 = art.key1 и mt.key2 = art.key2 где art.key1 не равен нулю, а art.key2 не равно нулю

Ответы [ 3 ]

2 голосов
/ 31 марта 2009
DELETE @MrTemp
FROM @MrTemp mt LEFT JOIN ...
1 голос
/ 31 марта 2009

Вы можете удалить только из одной таблицы за раз:

для удаления из @MrTemp [где в ARealTable есть соответствующая запись]

delete mt
from @MrTemp mt left join ARealTable art on mt.key1 = art.key1 and mt.key2 = art.key2 where art.key1 is not null and art.key2 is not nu

LL

или. удалить из ARealTable [снова, где запись имеет соответствующую запись в ARealTable]

delete art
from @MrTemp mt left join ARealTable art on mt.key1 = art.key1 and mt.key2 = art.key2 where art.key1 is not null and art.key2 is not null
0 голосов
/ 31 марта 2009

Вам нужно ссылаться на псевдоним после удаления, но перед из таблицы, которую вы хотите удалить из

delete art 
from @MrTemp mt left join ARealTable art on 
mt.key1 = art.key1 and mt.key2 = art.key2 
where art.key1 is not null and art.key2 is not null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...