问题描述

原本在mysql中可以运行的sql,在DM8执行失败,比如在sql中使用到group by

分析原因

达梦数据库在GROUP BY的处理上更加符合SQL标准的严格要求。如果在SELECT语句中使用了GROUP BY,那么所有非聚合的列都必须出现在GROUP BY子句中。这是为了确保查询结果的确定性和准确性。

解决方案1

为了使查询能在DM8中正常工作,并且提高代码的可移植性和准确性,应当修改查询语句以确保所有在SELECT子句中引用的非聚合列都包括在GROUP BY子句中

select fl.id,fl.column1, fl.column2, ..., fl.columnN  -- 列出所有需要的列
from fl
GROUP BY fl.id, fl.column1, fl.column2, ..., fl.columnN;  -- 在 GROUP BY 中包括所有列

解决方案2

使用DISTINCT关键字

SELECT DISTINCT fl.* 
FROM  fl 

解决方案3

在DM8中 修改为兼容mysql模式

修改dm.ini中的COMPATIBLE_MODE=4,然后重启数据库
Logo

一站式 AI 云服务平台

更多推荐