MySQL 错误 1351 无法创建视图
MySQL error 1351 Can't Create a View
下面是我试图用来创建视图的查询。当我运行吧,"I get Error Code: 1351. View's SELECT contains a variable or parameter"。为什么会这样?有没有办法解决这个问题,我可以创建一个视图而无需过多更改当前查询中的内容?
谢谢!!
create view delta as
select rnk2.`date`,
case when rnk1.r1=1 and rnk2.r2=1 then rnk1.X else rnk2.X-rnk1.X end as 'Daily Total'
from (
select `date`,X,@r1:=@r1+1 as r1
from samples, (select @r1:=0) a
order by `date` ) rnk1
inner join
(select `date`,X,@r2:=@r2+1 as r2
from samples, (select @r2:=0) b
order by `date`) rnk2
on (rnk1.r1=1 and rnk2.r2=1) or (rnk1.r1+1=rnk2.r2)
order by rnk2.`date`;
mySQL 视图不允许用户变量和子查询,所以我更改了查询并将视图分成两部分。
第一个视图将根据日期在 table SAMPLE 上分配一个行号。然后第二个视图将利用第一个视图 (sample_vw) 来执行主查询。
create view sample_vw as
select a.`date`, a.X, count(*) as rn
FROM samples a
JOIN samples b
ON a.`date` >= b.`date`
GROUP BY a.`date`;
create view delta as
SELECT t1.`date`,
case when t1.rn=1 and t2.rn=1 then t1.X else t2.X-t1.X end as 'Daily Total'
FROM sample_vw t1
INNER JOIN sample_vw t2
ON t1.rn+1=t2.rn or (t1.rn=1 and t2.rn=1);
下面是我试图用来创建视图的查询。当我运行吧,"I get Error Code: 1351. View's SELECT contains a variable or parameter"。为什么会这样?有没有办法解决这个问题,我可以创建一个视图而无需过多更改当前查询中的内容?
谢谢!!
create view delta as
select rnk2.`date`,
case when rnk1.r1=1 and rnk2.r2=1 then rnk1.X else rnk2.X-rnk1.X end as 'Daily Total'
from (
select `date`,X,@r1:=@r1+1 as r1
from samples, (select @r1:=0) a
order by `date` ) rnk1
inner join
(select `date`,X,@r2:=@r2+1 as r2
from samples, (select @r2:=0) b
order by `date`) rnk2
on (rnk1.r1=1 and rnk2.r2=1) or (rnk1.r1+1=rnk2.r2)
order by rnk2.`date`;
mySQL 视图不允许用户变量和子查询,所以我更改了查询并将视图分成两部分。
第一个视图将根据日期在 table SAMPLE 上分配一个行号。然后第二个视图将利用第一个视图 (sample_vw) 来执行主查询。
create view sample_vw as
select a.`date`, a.X, count(*) as rn
FROM samples a
JOIN samples b
ON a.`date` >= b.`date`
GROUP BY a.`date`;
create view delta as
SELECT t1.`date`,
case when t1.rn=1 and t2.rn=1 then t1.X else t2.X-t1.X end as 'Daily Total'
FROM sample_vw t1
INNER JOIN sample_vw t2
ON t1.rn+1=t2.rn or (t1.rn=1 and t2.rn=1);