【发布时间】:2019-04-18 07:37:51
【问题描述】:
我想将这样的查询返回的Ids 存储到一个变量中:
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。
【问题讨论】:
-
使用
temp table或table variable存储Id -
您可以使用 OUTPUT 子句,但我不确定它是否存在于 mysql 中。链接 https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql?view=sql-server-2017 。并且可以使用表变量。
-
@ch2019 输出子句在这里帮不上忙,问题不在于mysql。
标签: sql sql-server sql-server-2014