我正在寻找一种从SQL变量中提取值并将此值保存在新变量中的方法。例如,如果我有变量@myVar
,它存储值25,并且我想将此值保存到新变量@myVar1
,然后将@myVar
中存储的值更新为30 。我发现只设置@myVar1:= @myVar
不起作用,因为我将@myVar
中存储的值更改为30,@myVar1
变量也会自动更新为30。
我在SELECT语句中使用这些变量,以便跟踪前一行中的值并将其与当前行中的值进行比较。
相关的代码段是:
SELECT
CASE
When (@r is not null) then @myVar1:= @myVar
END,
@myVar:= @myVar + 1
如您所见,@myVar
每行都设置为新值,而@myVar1
只应在条件满足时设置为@myVar
的当前值,并保留无论值@myVar
发生任何变化,都存储该值,直到再次满足条件为止。因此,如果@myVar = 7
和@r
不为@myVar1 = 7
,那么当@myVar
将设置为8时,@myVar1
也将设置为8而不是保持在7,直到再次满足条件。
答案 0 :(得分:1)
也许你应该这样做:
@x_old := x;
@x := case when @r is not null then @y else @x end;
(如果这是在一个程序中,您可以将;
保留在原来的位置;如果这是在查询中,请将其替换为,
)
这样,如果条件未满足,您将保留@x
的值