• 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 出的列,要么是分组的列,要么是其他列的聚合函数,这样结果集才准确

  • 相关阅读:
    iOS 组件化方案
    iOS 核心动画概览
    iOS @字面量
    iOS id 和 instancetype 的区别
    C++ 中的 const
    iOS 开发资料
    iOS 架构-App组件化开发
    iOS 知名大牛的一些博客
    iOS 键盘 隐藏系统的 toolBar
    iOS UIView 单独设置一个角为圆角,两个 三个角也行
  • 原文地址:https://www.cnblogs.com/zhangpeng8888/p/11066850.html
Copyright © 2020-2023  润新知