zoukankan      html  css  js  c++  java
  • 关于sql中group by使用的一些注意点

    1、GROUP BY 和 ORDER BY一起使用时,ORDER BY要在GROUP BY的后面。

    2、ORDER BY 的字段在GROUP BY 后面必须有

    3、在select需要查询的语句中选中的字段,必须出现在group by子句中

    4、group by不一定要配合聚合函数,但是如果没有聚合函数,则必须满足第三点

    group by 阶段之后的所有阶段(having、select、orderby等)的操作对象将是组,而不是单独的行。每个组最终也表示查询结果集中的一行,就是说group by 之后的子句中指定的所有表达式务必保证为每个组只返回一个标量值。而聚合函数只为每个组返回一个值,所以一个元素如果不在group by列表中,就只能作为聚合函数的输入

    错误示例:

    select b.ID,b.scode,b.STITLE,c.S_CITY_NAME,count(*) from test1 a, test2 b, test3 c
    where a.ID = b.ID and c.I_STAFF_ID = a.I_STAFF_ID
    group by b.ID

    oracle报错: ORA-00979: 不是 GROUP BY 表达式

    原因:不满足上述第三点

    改正后:

    select b.ID,max(b.scode),max(b.STITLE),max(c.S_CITY_NAME),count(*) from test1 a, test2 b, test3 c
    where a.ID = b.ID and c.I_STAFF_ID = a.I_STAFF_ID
    group by b.ID

    基于字段看实际需求改成聚合函数

  • 相关阅读:
    sizeof、strlen、length、size
    extern关键字
    结构
    引用
    指针
    数组
    linux端口 ,打开服务端口
    linux用户禁用
    防止验证码的恶意发送
    springboot 项目windows下打包、注册服务。
  • 原文地址:https://www.cnblogs.com/benbencyb/p/14659401.html
Copyright © 2011-2022 走看看