SQL SELECT多列INTO多variables
我将Teradata中的SQL转换为SQL Server
在Teradata,他们有格式
SELECT col1, col2 FROM table1 INTO @variable1, @variable2
在SQL Server中,我发现
SET @variable1 = ( SELECT col1 FROM table1 );
每个语句只允许一个列/variables。 如何使用单个SELECT语句分配2个或更多variables?
SELECT @variable1 = col1, @variable2 = col2 FROM table1
SELECT @var = col1, @var2 = col2 FROM Table
这里是关于SET / SELECT的一些有趣的信息
- SET是variables赋值的ANSI标准,SELECT不是。
- SET一次只能分配一个variables,SELECT可以一次做多个赋值。
- 如果从查询分配,SET只能分配一个标量值。 如果查询返回多个值/行,则SET将引发错误。 SELECT会将其中一个值赋给variables,并隐藏多个值被返回的事实(所以你可能永远不知道为什么其他地方出了问题 – 对这个问题进行故障排除)
- 从查询中分配时,如果没有返回值,那么SET将分配NULL,其中SELECT根本不会进行赋值(所以variables不会改变它的前一个值)
- 就速度差异而言 – SET和SELECT之间没有直接的区别。 然而,SELECT在一次拍摄中进行多个分配的能力确实比SET有稍微的速度优势。