SQL选择多列插入多变量

问题描述:

我将SQL从Teradata数据到SQL Server中的TeradataSQL选择多列插入多变量

,他们有格式

SELECT col1, col2 
FROM table1 
INTO @variable1, @variable2 

在SQL Server中,我发现

SET @variable1 = (
SELECT col1 
FROM table1 
); 

每个语句只允许一个列/变量。如何使用单个SELECT语句分配2个或更多变量?

SELECT @variable1 = col1, @variable2 = col2 
FROM table1 
+0

与多个SELECT相比,这样做会提高性能/速度还是相同? –

+7

真正的答案是测试它并亲自查看。当然,非正式的答案是肯定的。 –

SELECT @var = col1, 
     @var2 = col2 
FROM Table 

以下是有关设置一些有趣的信息/ SELECT

  • 集是变量赋值的ANSI标准,SELECT不是。
  • SET一次只能分配一个变量,SELECT可以一次进行多个 赋值。
  • 如果从查询分配,SET只能分配一个标量值。如果 查询返回多个值/行 ,则SET将引发错误。选择 将分配一个值到 变量和隐藏返回了 多个值的事实,(所以 可能你不会知道为什么事情 要去别的地方错了 - 有乐趣 疑难解答之一)
  • 当从查询分配,如果没有返回值则SET将 分配NULL,这里选择不会 让所有的分配(所以 变量将不会改变从它的 前值)
  • 至于速度的差异 - SET之间没有直接的区别0和SELECT。然而,SELECT的能力 在一个 拍摄做出多个任务确实给它一个轻微的速度 优于SET。