Skip to main content

MySQL

Differences between MySQL and MariaDB​

SubSelects​

MariaDB only sees references one level up from its current scope. For example, the following will work in MySQL, but not in MariaDB:

SELECT posts.*,
(WITH c AS (
SELECT id
FROM conversions
WHERE post_id = posts.id) -- Problem: posts is not visible here in MariaDB
SELECT count(*) FROM c) as conversion_count
FROM posts;

This query is functionally equivalent and compatible with both MariaDB and MySQL.

SELECT posts.*,
(WITH c AS (
SELECT id
FROM conversions))
SELECT count(*) FROM c WHERE post_id = posts.id) as conversion_count
FROM posts;

This has come up in TryGhost/Ghost#15729 where the sub-sub-select has a UNION statement to combine the results of two tables together.