zoukankan      html  css  js  c++  java
  • group by 注意的细节 ,

    1. GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前. HAVING语句必须在ORDER BY子句之后。(where先执行,再groupby分组;groupby先分组,having在执行。)

    select T_NAME , T_ADDRESS ,min(rowid)      5                                         
    from xuesheng               1 

    where   T_AGE >20       2                 

    group by  T_NAME, T_PHONE,T_AGE, T_ADDRESS        3
    having count(*) > 1)          4

    红色数字是执行顺序:

    2. 除了聚集函数外, SELECT语句中的每个列都必须在GROUP BY子句中给出。count()为聚集函数,T_NAME, T_PHONE,T_BIRTHDAY, T_ADDRESS 在后面groupby中有,所以select后面可有可不有。

    (a)正确的:

    select T_NAME , T_ADDRESS ,min(rowid)                             ---select语句中的列
    from xuesheng
    group by T_NAME, T_PHONE,T_BIRTHDAY, T_ADDRESS   ---GROUP BY子句中
    having count(*) > 1) 

    (b) T_PHONE ,在select 语句中存在,而在group by中不存在,所以会报错。

    select T_NAME , T_ADDRESS ,min(rowid)  ,T_PHONE                      ---select语句中的列
    from xuesheng
    group by T_NAME, T_BIRTHDAY, T_ADDRESS                                    ---GROUP BY子句中
    having count(*) > 1) 

    3. having 作用的对象是分组出来的对象的相关聚合函数进行的筛选。

  • 相关阅读:
    java23种设计模式-结构型模式-适配器模式
    java23种设计模式-创建者模式-抽象工厂模式
    java23种设计模式-创建者模式-工厂模式
    从jvm运行数据区分析字符串是否相同
    Linux常见安全策略
    MySQL 报错案例分析
    Linux系统网络监控工具
    海量运维架构
    Linux运维面试技巧
    DBA机遇于风险并存
  • 原文地址:https://www.cnblogs.com/brianlai/p/10313106.html
Copyright © 2011-2022 走看看