MySQL和MariaDB之间不兼容 - FROM子句中的子查询。

时间:2017-01-23 13:26:23

标签: mysql mariadb

MariaDB声称是MySQL的直接替代品,但MySQL docs声明此功能自5.7.7版本开始提供:

  

在MySQL 5.7.7之前,SELECT语句不能包含子查询   FROM子句。

MariaDB knowledge base说这是不允许的:

  

SELECT语句不能在FROM子句中包含子查询。

但是,这不在MariaDB's compatibility page中列出。

我做了一些测试,看起来似乎没有支持MariaDB中的这种查询,但MariaDB文档中的冲突信息让我感到困惑。那么,MariaDB的哪一页是对的?是否真的不支持此功能?

3 个答案:

答案 0 :(得分:3)

如果你自己在最新版本的MariaDB上进行了测试(mysql v5.7.7于2015年4月发布,所以它不是新的,不过你应该测试最新的MariaDB),结果是MariaDB实例不支持视图的from子句中的子查询,那就是它。

是的,它应该在差异部分突出显示。您可以考虑针对文档错误提出错误报告。由于关于视图的MariaDB手册是准确的,因此这只是一个文档问题。只需确保您测试了最新的MariaDB版本。

答案 1 :(得分:1)

看起来它已经在10.2.x(自10.2.1开始)实施,目前是10.2.5 RC(候选版本)。

https://mariadb.com/kb/en/mariadb/mariadb-1021-release-notes/

答案 2 :(得分:-1)

MariaDB没有在视图的FROM子句中实现子查询,因为它基于没有实现该功能的MySQL版本。

https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility/部分说:

  

出于所有实际目的,MariaDB是替换相同MySQL版本的二进制代码(例如MySQL 5.1 - > MariaDB 5.1,MariaDB 5.2和MariaDB 5.3兼容.MySQL 5.5是与MariaDB 5.5兼容,并与MariaDB 10.0实现兼容。

(强调我的)

并非所有MySQL 5.6,5.7或更高版本的功能都在MariaDB中实现。文档非常清楚兼容性。

MariaDB是MySQL 5.5的一个分支,于2010年发布。所以MariaDB应该是向后兼容的,并且是一个替代品#34;那个主要版本的MySQL。

从那时起,MySQL发布了主要版本5.6和5.7,目前正在开发下一个版本,编号为8.0。

MariaDB已经从MySQL 5.6和5.7反向移植了一些功能,但显然不是MySQL 5.6 / 5.7的所有功能。因此,它与MySQL的兼容性有所不同,随着时间的推移差异会越来越大。