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。
正如 Simon 所解释的,这是一个影响 Mariadb 10.3.29、10.4.19、10.5.10 的错误
作为解决方法(在 10.3.29 中测试),您可以在 cnf 文件 [mysqld] 部分应用以下设置
optimizer_switch='split_materialized=off'
看来是 utf8mb4 的问题:
https://jira.mariadb.org/browse/MDEV-26337
检查:
character_set_server=utf8mb4
在你的 .conf
我有 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。
正如 Simon 所解释的,这是一个影响 Mariadb 10.3.29、10.4.19、10.5.10 的错误
作为解决方法(在 10.3.29 中测试),您可以在 cnf 文件 [mysqld] 部分应用以下设置
optimizer_switch='split_materialized=off'
看来是 utf8mb4 的问题:
https://jira.mariadb.org/browse/MDEV-26337
检查: character_set_server=utf8mb4 在你的 .conf