可以逐行处理sqlite UPDATE元素,以帮助解决“ sqlite根据列计算列”

问题描述 投票:1回答:1

我有一个表,其中包含基于其他计算列的计算列。

我知道使用子查询的this solution。但是,随着基于其他自己计算的计算列来计算列,这变得越来越不切实际。您需要针对每个计算级别的子查询。

我想到了另一种解决方案,该解决方案是首先用哑数填充计算所得的列,然后使用UPDATE按所需顺序计算列。

这里是MWE:

create table a (x ,y,z);
insert into  a(x,y,z)
    values (1,1,1),(2,1,1);
update a
    set y = x, 
    z = 7 * y;
select * from a;

当前当前不起作用,z的计算使用y的未刷新值。

为了解决这个问题,我必须分开更新语句

update a
    set y = 3 * x;
update a
    set z = 7 * y;

我的问题:有什么方法可以告诉SQLITE完成UPDATE语句中第一行的计算,然后继续进行,以便将所有计算捆绑在一个UPDATE语句下?

sqlite sql-update calculated-columns
1个回答
0
投票

y的新值为3 * x,因此不是:

z = 7 * y

用途:

z = 7 * (3 * x)

z = 21 * x

您的陈述将是:

update a
set y = 3 * x, 
    z = 21 * x;

请参见demo。结果:

| x   | y   | z   |
| --- | --- | --- |
| 1   | 3   | 21  |
| 2   | 6   | 42  |
© www.soinside.com 2019 - 2024. All rights reserved.