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 作用的对象是分组出来的对象的相关聚合函数进行的筛选。

  • 相关阅读:
    java_泛型
    java工具类Collections
    Map集合的遍历
    集合元素顺序的实现
    apk比较版本大小
    存储过程与SQL语句怎么选择
    线程协作-生产者/消费者问题
    线程中断、线程让步、线程睡眠、线程合并
    如何将字符串去重复demo工具
    JavaScript 中的函数介绍
  • 原文地址:https://www.cnblogs.com/brianlai/p/10313106.html
Copyright © 2011-2022 走看看