zoukankan      html  css  js  c++  java
  • mysql 与 oracle 比较group by 容易产生的误解

    group by :

    (1)oracle 中,总所周知,select (查询字段) from table1 group by column1 ,column2,,,,,,

    其中查询字段只能是column1,column2,,,,,,和其他列的聚合函数,其中红色字体要完全一致,

    (2)但是在mysql中,当查询字段未出现在group by 后面的字段,竟然也可以执行。如下例:

    SELECT
        CODE,
        NAME,
        kindergartenCode,
        gradeCode
    FROM
        t_class
    WHERE
        isDelete = 0
    AND NAME = '大一班999989'
    GROUP BY
        kindergartenCode,
        gradeCode
    ORDER BY
        id DESC

    运行结果:

    看到上面的结果,似乎对oracle的规定表示怀疑,可是经过仔细分析,运行sql:"select * from t_class where name='大一班999989' and kindergartenCode='1cd3b2a04fe1470fbc999989' and gradeCode='4'",结果如下:

    可以发现,其实表中是有两行记录的,但是按照上面分组后只返回了一条记录,显然是不正确的,因此,无论是mysql ,还是oracle ,一定要注意,使用了group by 语句后,前面select 出的列,要么是分组的列,要么是其他列的聚合函数,这样结果集才准确

  • 相关阅读:
    Python之‘’控制流‘’
    Python之运算符以及基本数据类型的object
    Python第一次写的代码
    Oracle角色管理
    Oracle的控制文件和日志文件
    Oracle的权限管理
    Oracle内置函数
    Oracle视图的使用
    Oracle事务和锁
    Oracle的用户管理
  • 原文地址:https://www.cnblogs.com/zhangpeng8888/p/11066850.html
Copyright © 2011-2022 走看看