我有以下观点
M_VWPROC_sub1、M_VWPROC_sub2、M_VWPROC_sub3、M_VWPROC_sub4、M_VWPROC_sub5、 M_VWPROC_sub6、M_VWPROC_sub7、M_VWPROC_sub8、M_VWPROC_sub9
我尝试使用以下 sql 创建 View ,但出现以下错误
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'M_VWPROC_sub2 union all M_VWPROC_sub3 union all M_VWPROC_sub4 union all M_VWPROC' at line 2
查询:
CREATE OR REPLACE VIEW M_VWPROC (UNIT, PS_DATE, LOCALIN, STOCKIN, STOCKOUT) AS
select inner_sub_table.UNIT,
inner_sub_table.PS_DATE,
sum(inner_sub_table.LOCALIN)LOCALIN,
sum(inner_sub_table.pur) STOCKIN,
sum(inner_sub_table.sale) STOCKOUT
from M_VWPROC_sub1
union all M_VWPROC_sub2
union all M_VWPROC_sub3
union all M_VWPROC_sub4
union all M_VWPROC_sub5
union all M_VWPROC_sub6
union all M_VWPROC_sub7
union all M_VWPROC_sub8
union all M_VWPROC_sub9)
inner_sub_table
group by inner_sub_table.UNIT, inner_sub_table.PS_DATE;
任何帮助。提前致谢。
最佳答案
union all
的正确语法需要子查询。 。 。这是一个 select
子句。但是,你不能做你想做的事。您需要另一层子查询。像这样的东西:
create view v_YetAnotherView as
select * from M_VWPROC_sub1
union all select * from M_VWPROC_sub2
union all select * from M_VWPROC_sub3
union all select * from M_VWPROC_sub4
union all select * from M_VWPROC_sub5
union all select * from M_VWPROC_sub6
union all select * from M_VWPROC_sub7
union all select * from M_VWPROC_sub8
union all select * from M_VWPROC_sub9;
然后:
CREATE OR REPLACE VIEW M_VWPROC (UNIT, PS_DATE, LOCALIN, STOCKIN, STOCKOUT) AS
select inner_sub_table.UNIT,
inner_sub_table.PS_DATE,
sum(yav.LOCALIN)LOCALIN,
sum(yav.pur) STOCKIN,
sum(yav.sale) STOCKOUT
from YetAnotherView yav
group by yav.UNIT, yav.PS_DATE;
请注意,这种对 View 的荒谬限制(from
子句不能包含子查询)仅限于 MySQL。
关于mysql - 无法从其他 View 创建 mysql View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22712174/