SQL创建视图

时间:2020-09-01 09:01:43

标签: mysql phpmyadmin

我对此有疑问:

CREATE VIEW dashboard
AS 
SET @prevValuepo := 0; 
SET @prevValuefc := 0;
SELECT *,po-@prevValuepo AS selisihpo ,@prevValuepo:= po,forecast-@prevValuefc AS selisihfc ,@prevValuefc:= forecast
FROM view_t_dasboard WHERE tahun= '2020' ORDER BY bulan ASC

但是为什么不能创建表视图

错误:#1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以在'SET @prevValuepo:= 0,@prevValuefc:= 0,附近使用正确的语法, po- @ prevValuepo AS selisihpo,@ prevValu'在第4行

1 个答案:

答案 0 :(得分:0)

SET语句中不能包含这些CREATE VIEW声明。另外,由于select子句中表达式的求值顺序未定义,因此您的查询甚至可能无法始终执行您想要的操作。

如果运行的是MySQL 8.0,我建议使用窗口函数而不是用户定义的变量。我认为您想要的逻辑是:

create view dashboard as
select
    t.*,
    po - lag(po, 1, 0) over(order by bulan) as selisihpo,
    forecast - lag(forecast, 1, 0) over(order by bulan) as selisihfc
from view_t_dasboard t
where tahun= '2020'