Mariadb / Mysql BUG? : 在子查询中按 `master` 分组

Mariadb / Mysql BUG? : group by `master` in subquery

我有 2 个表:

销售额:

id invoice valid
100 IV001 Y

付款方式:

id master amount test
110 100 200 100
111 100 300 100
112 101 400 101

然后我做了一个查询:

select master, sum(amount) amount from payment group by master

并给出预期的结果

master amount
100 500
101 400

但是当我 运行 以下查询时:

select s.id, s.invoice, p.amount from sales s join (select `master`, sum(amount) amount from payment group by `master`) p on p.`master`=s.id

我得到了这样的错误结果

id invoice amount
100 IV001 900 (should be 500)

但是,如果我使用列 test 作为组列,结果会正常。 我 运行 这个查询: select s.id, s.invoice, p.amount from sales s join (select test, sum(amount) amount from payment group by test) p on p.test=s.id 一切看起来都符合预期。

我猜这与列 master 相关,它是保留字,我已经使用了反引号 (`)。

我的问题是:如果我仍然想使用master作为列名,如何解决这个问题?还是 Mariadb / Mysql 错误?

(我在 Ubuntu 21.04 上 运行 Mariadb 版本 10.3 和 10.5)

编辑

请观看此视频:https://youtu.be/e2EEin1mf-E

提前致谢。

这是 Mariadb 10.3.29、10.4.19、10.5.10 中的错误,现已修复但尚未发布。我们遇到了同样的问题,不得不回滚到 10.4.18。

https://jira.mariadb.org/browse/MDEV-25714

正如 Simon 所解释的,这是一个影响 Mariadb 10.3.29、10.4.19、10.5.10 的错误

作为解决方法(在 10.3.29 中测试),您可以在 cnf 文件 [mysqld] 部分应用以下设置

optimizer_switch='split_materialized=off'

https://jira.mariadb.org/browse/MDEV-25725

https://jira.mariadb.org/browse/MDEV-25714

看来是 utf8mb4 的问题:

https://jira.mariadb.org/browse/MDEV-26337

检查: character_set_server=utf8mb4 在你的 .conf