我最近开始使用视图,出现了一个问题—是否可以对视图中的计算列执行任何操作?例如,有一个表:
CREATE TABLE IF NOT EXISTS schema.table(
row_id INT(255) NOT NULL AUTO_INCREMENT PRIMARY KEY,
val1 DOUBLE,
val2 DOUBLE);
在val1和val2中输入任意数据:
INSERT INTO schema.table (va1, val2) VALUES (1, 2);
INSERT INTO schema.table (va1, val2) VALUES (3, 4);
INSERT INTO schema.table (va1, val2) VALUES (5, 6);
我尝试基于表创建一个视图:
CREATE OR REPLACE
VIEW schema.table_VIEW
AS select
t1.row_id as row_id,
LAG (val3,1,0) OVER() + t1.val1 - t1.val2 as val3,
from
schema.table t1
我得到的错误是val3不存在于表中,这通常是合乎逻辑的。告诉我,这能实现吗?该视图的目标是得到一个列val3,其中最后一行中该列的值将被查看,val1将被添加,val2将从当前列中减去。
问题2—如果在表中创建一列val4,是否可以使用val3中的值动态更新它?
1条答案
按热度按时间smdnsysy1#
这基本上是一个滚动求和问题,将前一行的和加到当前行的计算中,以计算当前行的和。你可以在这里用相框。
ROWS UNBOUNDED PRECEDING
与SUM()
函数可以用来考虑val1 - val2
从第一行到当前行的值。架构(mysql v8.0)
查询#1
db fiddle视图