SQL SELECT多列INTO多变量

时间:2009-08-27 12:31:55

标签: sql sql-server teradata

我正在将SQL从Teradata转换为SQL Server

在Teradata中,他们的格式为

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

在SQL Server中,我找到了

SET @variable1 = (
SELECT col1 
FROM table1
);

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

2 个答案:

答案 0 :(得分:142)

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

答案 1 :(得分:34)

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

以下是有关SET / SELECT

的一些有趣信息
  
      
  • SET是变量赋值的ANSI标准,SELECT不是。
  •   
  • SET一次只能分配一个变量,SELECT可以多次分配   一次分配。
  •   
  • 如果从查询中分配,SET只能分配标量值。如果   查询返回多个值/行   然后SET将引发错误。选择   将指定其中一个值   变量并隐藏事实   返回了多个值(所以   你可能永远都不知道为什么会这样   其他地方出了问题 - 玩得开心   排除故障一个)
  •   
  • 从查询中分配时,如果没有返回值,则SET将   分配NULL,其中SELECT不会   完成任务(所以   变量不会改变它   以前的价值)
  •   
  • 就速度差异而言 - SET之间没有直接差异   和SELECT。然而SELECT的能力   在一个中进行多项任务   射击确实给它一个小的速度   优于SET。
  •