SQL SELECT 多列 INTO 多变量
-
20-09-2019 - |
题
我正在将 SQL 从 Teradata 转换为 SQL Server
在 Teradata 中,它们的格式为
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
其他提示
SELECT @var = col1,
@var2 = col2
FROM Table
以下是有关 SET / SELECT 的一些有趣信息
- SET 是变量赋值的 ANSI 标准,而 SELECT 不是。
- SET一次只能一次分配一个变量,选择可以一次进行多个分配。
- 如果从查询分配,SET 只能分配标量值。如果 query 返回多个值/行 则 SET 将引发错误。选择 将其中一个值分配给 变量并隐藏以下事实: 返回了多个值(因此 你可能永远不会知道为什么会这样 其他地方出了问题 - 玩得开心 对那个进行故障排除)
- 从查询分配时,如果没有返回的值,则设置将分配null,其中选择将根本不会使分配(因此变量将不会从其上一个值中更改)
- 就速度差异而言 - SET 之间没有直接差异 和 SELECT。然而,SELECT的能力 在一次中完成多项作业 射击确实给了它一个轻微的速度 优于 SET。
不隶属于 StackOverflow