MySQL 8中查询中sum()的数量限制?

MySQL 8中查询中sum()的数量限制?,mysql,Mysql,我最近安装了MySQL 8,发现有些查询不再运行。错误是: SQL错误(1022):无法写入;表“C:\WINDOWS\SERVIC~1\NETWOR~1\AppData\Local\Temp\#sql2db8_13_26”中的重复键 MySQL 5.7或更早版本没有问题 我在论坛上的所有研究表明,这通常发生在外键和约束的情况下。我没有,只有主键和两个索引 我的查询生成843列,其中包含KPI,所有这些都使用sum()进行聚合。给我的印象是,如果我删除了大约2/3的查询内容,查询将正常运行,不会

我最近安装了MySQL 8,发现有些查询不再运行。错误是:

SQL错误(1022):无法写入;表“C:\WINDOWS\SERVIC~1\NETWOR~1\AppData\Local\Temp\#sql2db8_13_26”中的重复键

MySQL 5.7或更早版本没有问题

我在论坛上的所有研究表明,这通常发生在外键和约束的情况下。我没有,只有主键和两个索引

我的查询生成843列,其中包含KPI,所有这些都使用sum()进行聚合。给我的印象是,如果我删除了大约2/3的查询内容,查询将正常运行,不会出现任何错误。此外,如果我删除了group by或所有的总和,也没有问题

所以我想知道在MySQL 8.0中是否有新的聚合操作符的数量调整

下面是我查询的一个简化示例。表正在运行MyISAM

select Time,eNodeB,
round((sum(`L.E-RAB.SuccEst.QCI.1`)/sum(`L.E-RAB.AttEst.QCI.1`))*100,3) as RAB_Est_SR,
sum(`L.E-RAB.AttEst.QCI.1`) as RAB_Est_att,
...
from h_cell
where enodeb='10006' and time>='2018-01-01'
group by time

不!没有限制。正如错误消息所说,您有用于分组的重复密钥。这意味着您对GROUP BY的使用不正确!必须使用select in GROUP子句前面的每一列(标量列除外)。 因此,您必须将查询更改为:

select Time,eNodeB,
round((sum(`L.E-RAB.SuccEst.QCI.1`)/sum(`L.E-RAB.AttEst.QCI.1`))*100,3) as RAB_Est_SR,
sum(`L.E-RAB.AttEst.QCI.1`) as RAB_Est_att,
...
from h_cell
where enodeb='10006' and time>='2018-01-01'
group by time,eNodeB