达梦数据库使用常见错误及解决方案(MySQL)

[-4080]: 不是 group by 表达式

【例子】

select ri.*,count(bd.id) bindDeviceCount
        from room_ip ri left join bids_device bd on ri.name = bd.room_name

【问题原因】

  • GROUP BY 和 ORDER BY 一起使用时,ORDER BY 要在 GROUP BY 的后面。
  • 在 select 需要查询的语句中选中的字段,必须出现在 GROUP BY 子句中。

【解决方法】

若不想修改 SQL 语句,可以通过以下方法解决: 方法 1:修改 dm.ini 的 compatible_mode 参数为 4,来兼容 MySQL 语法,修改参数后需要重启数据库服务。 方法 2: 非 mysql 兼容模式下(即 COMPATIBLE_MODE 不等于 4),修改 GROUP_OPT_FLAG(动态会话级)参数包含 1 取值,即支持查询项不是 GROUP BY 表达式。

alter  system set 'GROUP_OPT_FLAG'=1 both;

你可能感兴趣的:(数据库)