【 使用环境 】测试环境
【 OB or 其他组件 】oceanbase-MySQL
【 使用版本 】5.7.25-OceanBase_CE-v4.3.5.2
【问题描述】同样的sql语句,在mysql和oracle中是正常的,但oceanbase中报错
sql语句:select count(0) from table_a order by column_a
报错信息:1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),…) with no GROUP columns is illegal if there is no GROUP BY clause
在OceanBase中,当SQL语句中使用聚合函数(如COUNT())并且没有GROUP BY子句时,不允许混合使用非聚合列(如ORDER BY column_a)。这是OceanBase为了确保查询结果的确定性和一致性而采取的一种严格检查。在MySQL和Oracle中,这种查询可能被允许,但在某些情况下可能导致不确定的结果。
针对您的SQL语句 select count(0) from table_a order by column_a,您可以考虑以下两种解决方案之一:
如果您不需要按column_a排序,可以移除ORDER BY子句:
select count(0) from table_a;
如果确实需要按column_a排序,可以使用子查询来实现:
select * from (select count(0) as cnt, column_a from table_a group by column_a) t order by t.column_a;