我正在将SQL从Teradata转换为SQL Server
在Teradata中,他们的格式为SELECT col1, col2
FROM table1
INTO @variable1, @variable2
在SQL Server中,我找到了
SET @variable1 = (
SELECT col1
FROM table1
);
只允许每个语句使用一个列/变量。如何使用单个SELECT语句分配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。