Сохранить список чисел, возвращаемых запросом, в переменную - PullRequest
1 голос
/ 18 апреля 2019

Я хотел бы сохранить Id s, возвращенные запросом, как в переменной:

SELECT FooId FROM Bar; -- FooId is of type int

Чтобы позже я мог сказать что-то вроде:

DELETE FROM Foo WHERE Id IN @TheFooIdsIGotFromThePreviousQueryAbove;

Как мне это сделать? В частности, какой тип данных я должен объявить для такой переменной списка?

Обратите внимание, что я мог бы просто сделать:

DELETE FROM Foo WHERE Id IN (SELECT FooId FROM Bar);

Но я не могу этого сделать по причинам, которые просто усложнят вопрос.

Я использую Microsoft SQL Server 2014.

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Можно также использовать временные таблицы

SELECT FooId AS ID INTO #tmp_bar FROM Bar 

--#tmp_bar can be used as a normal table
SELECT ID FROM #tmp_bar 
1 голос
/ 18 апреля 2019

используйте temp table или table variable для хранения идентификатора

-- declare table variable
declare @IDS table (Id int)

-- insert into the table variable
insert into @IDS (Id) SELECT FooId FROM Bar

-- join the table variable to the table you want to delete
DELETE d
FROM   Foo d
       INNER JOIN @IDS i ON d.Id = i.Id
...