2017-01-23 154 views
3

MariaDB的声称自己是一个简易替换为MySQL,但MySQL docs指出,这项功能是自5.7.7版本:MySQL和MariaDB之间的不兼容 - FROM子句中的子查询。

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

MariaDB knowledge base说,这是不允许的:

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

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

我做了一些测试,好像MariaDB中没有这种查询支持,但MariaDB文档中的冲突信息让我感到困惑。那么,MariaDB的哪一页是正确的?该功能是否真的不支持(还)?

+0

文件中的错误报告 – e4c5

+3

MYSQL和MariaDB的可能已经开始了作为同样的事情,但随着时间的推移,他们会出现分歧越来越 – RiggsFolly

+0

'VIEWs'已经心不在焉实施。有时Oracle或MariaDB会认真对待它们。那时,会有更多的分歧。我的意见:避免'VIEWs'。 –

回答

3

如果您自己对最新版本的MariaDB进行了测试(2015年4月发布了mysql v5.7.7,因此它不是新的,但是您应该测试最新的MariaDB),结果是MariaDB实例没有在视图的from子句中支持子查询,那么这就是它的原因。

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

-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是2010年发布的MySQL 5.5的一个分支。因此,MariaDB应该是向后兼容的,并且是该主要版本MySQL的“直接替代品”。从此,MySQL发布了主要版本5.6和5.7,并且目前正在开发他们编号为8.0的下一个版本。 MariaDB已经支持MySQL 5.6和5.7的一些功能,但显然不是MySQL 5.6/5.7的所有功能。因此它与MySQL的兼容性不同,随着时间的推移,差异将会变得更大。

+0

匿名downvoter,谨慎解释为什么你认为这个答案值得赞赏?也许我可以改进它。 –

+0

然而,这不是我低估了你的答案,我觉得它并不真正回答这个问题,它也不完全准确。 – Shadow

+0

这是不准确的,因为显然MariaDB文档在兼容性上并不明显 - 至少有一些细节是不正确的。这就是为什么这个问题首先被提出。 – Shadow