MySQL 和 MariaDB 之间的不兼容性 - FROM 子句中的子查询。
Incompatibility between MySQL and MariaDB - Subquery in FROM clause.
MariaDB 声称是 MySQL 的直接替代品,但 MySQL docs 声明此功能自版本 5.7.7 起可用:
Before MySQL 5.7.7, the SELECT statement cannot contain a subquery in
the FROM clause.
MariaDB knowledge base 说这是不允许的:
The SELECT statement cannot contain a subquery in the FROM clause.
但是,MariaDB's compatibility page中没有列出。
我做了一些测试,MariaDB 似乎不支持这种查询,但 MariaDB 文档中的冲突信息让我感到困惑。那么,MariaDB 的哪一页是正确的?真的不支持这个功能吗(还)?
如果你自己在最新版本的MariaDB上进行测试(mysqlv5.7.7是2015年4月发布的,所以不是新的,但是你应该测试最新的MariaDB),结果是MariaDB 实例不支持视图的 from 子句中的子查询,那么就是这样。
是的,它可能应该在差异部分突出显示。您可以考虑围绕文档不正确提出错误报告。由于关于视图的 MariaDB 手册是准确的,这只是一个文档问题。请确保您确实测试了最新的 MariaDB 版本。
MariaDB 尚未在视图的 FROM
子句中实现子查询,因为它基于未实现该功能的 MySQL 版本。
https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility/ 部分表示:
For all practical purposes, MariaDB is a binary drop in replacement of the same MySQL version (for example MySQL 5.1 -> MariaDB 5.1, MariaDB 5.2 & MariaDB 5.3 are compatible. MySQL 5.5 is compatible with MariaDB 5.5 and also in practice with MariaDB 10.0).
(强调我的)
并非 MySQL 5.6、5.7 或更高版本的所有功能都在 MariaDB 中实现。文档非常清楚兼容性。
MariaDB 是 MySQL 5.5 的一个分支,于 2010 年发布。因此 MariaDB 应该是 backward-compatible 和 MySQL 那个主要版本的 "drop-in replacement"。
从那时起,MySQL 发布了主要版本 5.6 和 5.7,目前正在开发编号为 8.0 的下一个版本。
MariaDB 具有 back-ported MySQL 5.6 和 5.7 的一些功能,但显然不是 MySQL 5.6/5.7 的所有功能。因此,它与 MySQL 的兼容性存在分歧,并且随着时间的推移,差异会越来越大。
看起来它已在 10.2.x(自 10.2.1 起)中实现,目前为 10.2.5 RC(候选发布版)。
https://mariadb.com/kb/en/mariadb/mariadb-1021-release-notes/
MariaDB 声称是 MySQL 的直接替代品,但 MySQL docs 声明此功能自版本 5.7.7 起可用:
Before MySQL 5.7.7, the SELECT statement cannot contain a subquery in the FROM clause.
MariaDB knowledge base 说这是不允许的:
The SELECT statement cannot contain a subquery in the FROM clause.
但是,MariaDB's compatibility page中没有列出。
我做了一些测试,MariaDB 似乎不支持这种查询,但 MariaDB 文档中的冲突信息让我感到困惑。那么,MariaDB 的哪一页是正确的?真的不支持这个功能吗(还)?
如果你自己在最新版本的MariaDB上进行测试(mysqlv5.7.7是2015年4月发布的,所以不是新的,但是你应该测试最新的MariaDB),结果是MariaDB 实例不支持视图的 from 子句中的子查询,那么就是这样。
是的,它可能应该在差异部分突出显示。您可以考虑围绕文档不正确提出错误报告。由于关于视图的 MariaDB 手册是准确的,这只是一个文档问题。请确保您确实测试了最新的 MariaDB 版本。
MariaDB 尚未在视图的 FROM
子句中实现子查询,因为它基于未实现该功能的 MySQL 版本。
https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility/ 部分表示:
For all practical purposes, MariaDB is a binary drop in replacement of the same MySQL version (for example MySQL 5.1 -> MariaDB 5.1, MariaDB 5.2 & MariaDB 5.3 are compatible. MySQL 5.5 is compatible with MariaDB 5.5 and also in practice with MariaDB 10.0).
(强调我的)
并非 MySQL 5.6、5.7 或更高版本的所有功能都在 MariaDB 中实现。文档非常清楚兼容性。
MariaDB 是 MySQL 5.5 的一个分支,于 2010 年发布。因此 MariaDB 应该是 backward-compatible 和 MySQL 那个主要版本的 "drop-in replacement"。
从那时起,MySQL 发布了主要版本 5.6 和 5.7,目前正在开发编号为 8.0 的下一个版本。
MariaDB 具有 back-ported MySQL 5.6 和 5.7 的一些功能,但显然不是 MySQL 5.6/5.7 的所有功能。因此,它与 MySQL 的兼容性存在分歧,并且随着时间的推移,差异会越来越大。
看起来它已在 10.2.x(自 10.2.1 起)中实现,目前为 10.2.5 RC(候选发布版)。
https://mariadb.com/kb/en/mariadb/mariadb-1021-release-notes/