1

MySql 创建视图:

CREATE VIEW Foo as 
select type from (select 8 as type UNION ALL select 9 as type) types;

Windows 上的 MySql 5.7.11:有效,但 mysql 5.6.25-0ubuntu0.15.04.1(Ubuntu):无效。

View's SELECT contains a subquery in the FROM clause

这是从5.6到5.7的变化?我尝试在 Ubuntu 上将 mysql 升级到 5.7,但它在 Ubuntu 上不可用。有什么建议吗?谢谢。

编辑:这个例子是一个测试用例。真实案例是创建一个视图,使 Bar 的一条记录成为视图中的两条记录:

   CREATE VIEW Foo as 
    select types.type, bar.value from 
    (select 8 as type UNION ALL select 9 as type) types, Bar bar
4

2 回答 2

1

问题是您正在使用从另一个查询中选择的查询创建视图。

因此,您应该以不同的方式在您的视图中简单地编写选择查询。


解决方案:

查询:

select type from (select 8 as type UNION ALL select 9 as type) types;

等同于:

select 8 as type UNION ALL select 9 as type

所以创建一个视图:

CREATE VIEW Foo AS
  select 8 as type UNION ALL select 9 as type;
于 2016-10-20T00:59:32.970 回答
1

是的,这是 MySQL 的一个变化。

MySQL 的早期版本不允许在存储视图定义中使用内联视图(或 MySQL 术语中的派生表)。

至于建议......视图查询中似乎不需要内联视图。除此之外,我质疑需要......也就是说,需要存储视图定义的原因。

于 2016-10-20T02:08:10.997 回答