【问题标题】:Re-run the query of store the results in a table variable?重新运行将结果存储在表变量中的查询?
【发布时间】:2010-07-12 20:17:54
【问题描述】:
我处于需要多次运行相同查询的情况。我必须查看返回的行是否对应于特定值(查询 1),否则,我必须返回结果集的第一行(查询 2)。在 SQL Server 2008 中,我想知道什么是最好的:运行查询并将结果存储在表变量中或重新运行查询两次(即 SELECT * FROM Bla WHERE Bla.Column IN (...) 和 SELECT TOP 1 *来自布拉)?
这两种解决方案中哪一种更可取和/或更快?
【问题讨论】:
标签:
sql
tsql
sql-server-2008
【解决方案1】:
说实话,没有什么“干净”的,真的
SELECT * INTO #foo FROM Bla WHERE Bla.Column IN (...)
IF @@ROWCOUNT = 0
SELECT TOP 1 * FROM Bla
ELSE
SELECT * FROM #foo
这个sn-p的目的
也可以在一个 UNION ALL 中使用 NOT IN 或 EXISTS 来完成,但这意味着对 Bla 的更多接触。
我不确定这是您的选择 1 还是 2...