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

  • 相关阅读:
    使用Speex中的AEC模块,提高声音质量(转)
    音频编解码speex库的使用方法
    VC 多线程编程(转)
    并口、串口、COM口区别
    用GDB调试程序
    [转]PCM文件格式
    PreTranslateMessage作用和使用方法
    音频编解码标准
    VS2010 运行速度加快方法(转)
    ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系
  • 原文地址:https://www.cnblogs.com/brianlai/p/10313106.html
Copyright © 2011-2022 走看看