当前位置:  开发笔记 > 编程语言 > 正文

T-SQL,在单个选择中更新多个变量

如何解决《T-SQL,在单个选择中更新多个变量》经验,为你挑选了2个好方法。

是否可以在单个选择中更新多个局部变量?

就像是:

set
    @variableOne = avg(someColumn),
    @variableTwo = avg(otherColumn)
    from tblTable

对于像这项任务一样简单的事情,做两个单独的选择操作似乎有点浪费:

set @variableOne = ( select avg(someColumn) from tblTable )
set @variableTwo = ( select avg(otherColumn) from tblTable )

Frederik Ghe.. 97

像这样的东西:

select @var1 = avg(someColumn), @var2 = avg(otherColumn) 
from theTable


Amy B.. 13

您可以使用SELECT赋值来分配多个变量.此代码生成一行常量,并将每个常量分配给变量.

SELECT
  @var1 = 1,
  @var2 = 'Zeus'

您甚至可以查询表并以这种方式进行分配:

SELECT
  @var1 = c.Column1,
  @var2 = c.Column2,
FROM
  Customers c
WHERE c.CustomerID = @CustomerID

注意:此代码的操作类似于while循环.

如果有多行,则每行将分配给变量,最后一行将保留在那里.如果您没有指定排序,则放弃控制哪一行将是最后一行.

如果没有行,则根本不会分配变量.变量不会设置为null - 它们将保持不变.如果赋值在循环中完成(这通常会导致无限循环,因为变量永远不会改变),这是一个关键问题.

首选使用SET赋值而不是SELECT赋值.在考虑上述两种情况时,仅使用SELECT赋值.



1> Frederik Ghe..:

像这样的东西:

select @var1 = avg(someColumn), @var2 = avg(otherColumn) 
from theTable



2> Amy B..:

您可以使用SELECT赋值来分配多个变量.此代码生成一行常量,并将每个常量分配给变量.

SELECT
  @var1 = 1,
  @var2 = 'Zeus'

您甚至可以查询表并以这种方式进行分配:

SELECT
  @var1 = c.Column1,
  @var2 = c.Column2,
FROM
  Customers c
WHERE c.CustomerID = @CustomerID

注意:此代码的操作类似于while循环.

如果有多行,则每行将分配给变量,最后一行将保留在那里.如果您没有指定排序,则放弃控制哪一行将是最后一行.

如果没有行,则根本不会分配变量.变量不会设置为null - 它们将保持不变.如果赋值在循环中完成(这通常会导致无限循环,因为变量永远不会改变),这是一个关键问题.

首选使用SET赋值而不是SELECT赋值.在考虑上述两种情况时,仅使用SELECT赋值.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有