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

  • 相关阅读:
    linux源码阅读笔记 asm函数
    linux源码阅读笔记 #define 语句的妙用
    对于python的内存管理的好文章
    #define x do{......} while(0)的用处
    reverse list
    判断数组是否存在重复元素
    找出数组中出现奇数次的元素
    找出数组中唯一的重复元素
    两个有序数组中的交集
    Java Socket(3): NIO
  • 原文地址:https://www.cnblogs.com/brianlai/p/10313106.html
Copyright © 2011-2022 走看看