问题描述
原本在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,然后重启数据库