Замените подзапрос переменной SQL Server
У меня есть несколько операторов удаления для запуска на SQL Server 2008 R2
DELETE FROM A WHERE A_id in (SELECT B_id FROM B WHERE B_name = 'Target')
DELETE FROM B WHERE B_id in (SELECT B_id FROM B WHERE B_name = 'Target')
DELETE FROM C WHERE C_id in (SELECT B_id FROM B WHERE B_name = 'Target')
DELETE FROM D WHERE D_id in (SELECT B_id FROM B WHERE B_name = 'Target')
Можно ли использовать переменную для замены повторяющегося подзапроса? Существует ли такой тип переменной для хранения подзапроса или его результатов?
Спасибо
1 ответ
Табличная переменная для хранения идентификаторов для удаления...
Declare @BIDs Table
(
B_Id Int Not Null
)
Insert Into @BIDs (B_Id)
SELECT B_Id FROM B WHERE B_Name = 'Target'
DELETE FROM A WHERE A_id in (SELECT B_id FROM @BIDs)
DELETE FROM B WHERE B_id in (SELECT B_id FROM @BIDs)
DELETE FROM C WHERE C_id in (SELECT B_id FROM @BIDs)
DELETE FROM D WHERE D_id in (SELECT B_id FROM @BIDs)