问下sql中order by 和group by问题?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

问下sql中order by 和group by问题?报错

爱吃鱼的程序员 2020-06-08 14:32:17 91

一直有人说这个原则:ORDER BY 子句中的列必须包含在聚合函数或 GROUP BY 子句中。

但是我今天执行了这个sql,

SELECT
                a.act_code, a.create_time,
           count(c.act_code) voteItemNum
              FROM
                vote_activity a left join vote_item c on c.act_code = a.act_code
            WHERE
            a.act_status = 1  and a.act_type = '1' group by a.act_code  order by a.create_time

 

sql中a.create_time 不在聚合函数或者group by中,但是也没有报错,也达到sql效果。问下问什么?

SQL
分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-08 14:32:32

    这是低版本的mysql吗?sql92标注禁止这种查询,sql99允许这种查询,但是前提是group中的字段能唯一确定select中列出的其它字段。mysql5.7的时候,做了几次特别的调整,具体看官方文档照sql标注写就没问题版本在楼下。这么说不同版本,sql还有可能不通过?那服务器更换,迭代岂不是要出大问题

    <imgheight="269"src="https://static.oschina.net/uploads/space/2017/0518/101111_glKK_3197054.png"width="696">

    这是服务器中的版本

    可以的.

    groupby只是按某字段进行分组,如果没有orderby会自动按照查询到的结果进行自然排序,如果有了orderby则会按照orderby的字段进行排序.并不影响.

    这是mysql搞的鬼,尽量不要写这种代码。你这个语句相当于groupby的三个字段分组,而你select列表中的create_time没有出现在group中,他的值是不可预料的,其他值应该是正常的

    一直有人说这个原则:ORDERBY子句中的列必须包含在聚合函数或GROUPBY子句中。

     

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题