我有一个表,其中包含基于其他计算列的计算列。
我知道使用子查询的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语句下?
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 |