gpt4 book ai didi

sql - 在联合语句中更改 T-SQL 变量

转载 作者:行者123 更新时间:2023-12-02 07:29:08 25 4
gpt4 key购买 nike

我想将变量值从联合语句的一部分更改为另一部分:

例如

USE db1
DECLARE @x int;
set @x = 5;
SELECT * FROM [db1].[Schema1].[table1]
where intCol1 <= @x
UNION
--set @x = 10; -- doesn't allow me to change variable here
SELECT * FROM [db1].[Schema1].[table1]
where intCol1 <= @x

-- in this case a work-around would be to use where intCol1 <= (2 * @x) in the last line.

但是,如果您无法更改变量,那么变量还有什么意义呢?

是否可以将变量更改为在 select 语句的不同部分具有不同的值,或者这在本质上是不可能的?

因为所有 < 5 的数字也 < 10,我意识到如果你只用 where intCol1 <= ( 2* @x) 做一个单一的选择,答案是一样的然而,这是一个更大的查询方案的简化版本......

提前感谢您的关注

最佳答案

您不能以这种方式更改 SELECT 内部的变量,因为作为该语句的一部分发生的计算没有顺序。 SQL Server 可以先执行第二个分支。允许这样的事情将是一个非常困惑的编程模型。

SELECT 是您想要的数据的规范。它不是关于如何检索该数据、以何种顺序使用何种访问方法的规范。

SELECT 是一个函数式程序。您不能将状态作为选择的一部分进行修改。这是一件非常好的事情。

使用两个变量。

关于sql - 在联合语句中更改 T-SQL 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24082700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com