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有稍微的速度优势。