2017-01-23 22 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