【发布时间】:2018-02-05 22:19:38
【问题描述】:
在 MySQL 5.6.34(我的新开发服务器)和 MariaDB 10.2.8(我的新生产服务器,我以为我今天终于部署代码的地方——叹息!)上的数据库结构和数据完全相同,MySQL 是工作而 MariaDB 没有。这是多年来在 MySQL 5.0.95 上运行良好的代码。我已将查询简化为显示问题的最小示例 - 似乎 GROUP_CONCAT() 和子查询不混合。这是查询:
SELECT person.PersonID,
GROUP_CONCAT(CategoryID ORDER BY CategoryID SEPARATOR ',') AS categories
FROM person LEFT JOIN percat ON person.PersonID=percat.PersonID
WHERE person.PersonID IN (SELECT PersonID FROM action WHERE ActionTypeID=3)
GROUP BY person.PersonID
这是一张合成的屏幕截图,显示了所有三个表的结构:
在 MySQL 上,它运行良好,因为它已经运行了多年。这是结果和EXPLAIN:
这是我在 MariaDB 上得到的疯狂结果:
我不太了解数据库引擎的内部工作原理,无法关注EXPLAIN,但我认为线索就在某处。我发现this bug report 听起来很相关,但我真的不明白他们在说什么,更重要的是,我应该怎么做。
【问题讨论】:
标签: subquery mariadb group-concat