最近做项目需要用到mysql和db2两个数据库,发现用sql的时候,两个数据库的差别还是挺大的,比如mysql没有row_number函数,而db2有,但是现在有一个差异点让我很困惑,查了很多资料没有解答,望广大网友给点建议
问题是这样的:
在我的认知中,group by函数的用法,允许结构1:select colume1 from table group by coulume1,colume2;
但是不可以结构2:select colume1,colume2,count(colume3) from table group by colume1;
我的理解这是个分组,这样查,是按colume1分组,取的却是一个组内的字段,一个组外的字段,数据没有对应关系,sql会报错。
事实上,在db2环境下,执行了结构2这种语句,返回的是-119错误,仍在意料之内。
但是在mysql下,执行了结构2这种语句,没有报错,且查询成功,只是对应关系是按结果集顺序优先匹配。
这就是我的困惑了,mysql下的查询结果是没有分组的对应关系和分组的依据是不一致的,mysql真的支持这种查询方式吗?还是因为我的环境原因,mysql是5.7.17,数据库工具是navicat
问题已经解决了: