mysql与oracle在groupby语句上的细节差异
前言
之所以去纠那么细节的问题,是因为之前有过一个这样的场景:
有个同学,给了一条数据库的语句给我,问,为啥这样子的语句在oracle语句下执行不了。
select * from xx where xxx is not null group by yy;
拿到这条语句的第一时间,其实,我也并没有看出是什么错。仔细一想之后才想起,在基础的SQL中包含该group by的select语句,select语句部分是有限制的,一般是聚合函数和group by 的字段。随后,我就告诉他,这条语句本身是有错的。
然而,我同学却反驳说,这条语句他在其他数据库中是能运行的。然后,就有了这篇博客
细说
为了询证,我询问了同学他说能运行的数据库是什么数据库。结果同学说是mysql。


如图所示,相同类型的语句,在oracle和mysql执行,一个是可以正常运行的,而在oracle上,却是没能通过语句的校验。为啥呢?
回过头看看,现在市场上的关系型数据库可谓不少,其实他们都在SQL语句的解析上,都遵循着SQL国际标准,只是各自遵循的严格程度不同而已,同时,各个数据库也在SQL标准上扩展开了,有了自己支持的特色的数据库语句,如mysql的limit。也就是这样,才有了上述情况。SQL标准中,其实在包含group by 的 select 语句能查询的数据是有限制的。Oracle比较严格的遵守了这一限制,而mysql 则并没有,这样才使得使用惯了mysql的朋友在刚开始的时候有这样的错觉,觉得明明正确的语句为啥就是执行不了。
思考
在标准这方面,要论对错,其实是没必要的。很多时候,标准制定出来,只是一种美好的期望而已。然而,作为技术,其实应该的更多的是回归本质,更多的了解原理,就不会因为某个工具并没严格要求的东西,养成不良的习惯。
此博文同步更新于 http://blog.e65535.com/2016/05/26/mysql-oracle-groupby/
mysql与oracle在groupby语句上的细节差异的更多相关文章
- Springboot2.0(Spring5.0)中个性化配置项目上的细节差异
在一般的项目中,如果Spring Boot提供的Sping MVC不符合要求,则可以通过一个配置类(@Configuration)加上@EnableWebMvc注解来实现完全自己控制的MVC配置.但此 ...
- 【Mysql】MySQL与Oracle的大小写问题
转载来源:http://aofengblog.blog.163.com/blog/static/63170212010101065030136/ MySQL与Oracle在大小写处理上的区别: 1MY ...
- 开发中mysql和oracle的区别
首先就不描述mysql与oracle在整个数据库系统上的区别了,仅从程序员开发的角度来说: 1.主键: mysql一般会用到一个自增的属性,例如设置一个id字段,类型设置为auto increment ...
- MySQL与Oracle 差异比较之四条件循环语句
循环语句 编号 类别 ORACLE MYSQL 注释 1 IF语句使用不同 IF iv_weekly_day = 'MON' THEN ii_weekly_day := 'MON';ELS ...
- Linq Mysql GroupBy语句的问题处理
语句如下: var resumeList = db.ChannelResume.Where(model); var groupValues = resumeList.GroupBy(t => n ...
- MySQL、Oracle和SQL Server的分页查询语句
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...
- MySql类似Oracle的dual虚拟表
在mysql里也存在和oracle里类似的dual虚拟表:官方声明纯粹是为了满足select ... from...这一习惯问题,mysql会忽略对该表的引用. 你可千万注意了: select * f ...
- MySQL与Oracle的主要区别
Mysql与Oracle区别 1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. ...
- 数据库MySQL与Oracle的一些去O注意项
一.oracle递归查询语句start with ...connect by prior ① 给你一张表,表里面有主键id,以及该项的父节点parent_id,查询出该表中所有的父子关系节点树? Or ...
随机推荐
- 如果gen.lib.rus.ec这个电子书下载站上不去了,那就用这个吧
如果著名的gen.lib.rus.ec这个电子书下载站上不去了,那就用这个吧: 万千合集站 http://www.hejizhan.com/ 里面除了镜像索引了gen.lib.rus.ec上的所有英文 ...
- 关于iTunes随机播放和我所不知道的自己
无意中看到这套题,很有意思,自己做了一下. 规则是这样的:打开你的播放器,我的是iTunes,不管是哪个,总之打开最全的那个播放列表,开启随机播放,按顺序把每首歌名写在下面每道题的后面,比如第一首歌是 ...
- 关于readonly
当某个字段是引用类型,且该字段是readonly类型时,那么不可改变的是引用,而非引用的对象.如以下代码: public sealed class AType { public static read ...
- Paint.NET
http://www.dotpdn.com/downloads/pdn.html Paint.NET To download, please click the Free Download Now l ...
- Build FFmpeg for iOS
FFmpeg Build Instructions MAC 10.8 or better Copy ffmpeg-2.0.tar.bz2 (https://ffmpeg.org/releases/ff ...
- 基于Redis的CustomerSessionProvider(二)
接一的考虑,那么就做Redis的SessionProvider就非常简单了,只考虑整个Session的缓存,主要实现以下两个函数就可以了 public override SessionStateSto ...
- django restful webservice返回json数据
做这个demo的前提是你已经配好了python ,django ,djangorestframwork(在我的上一篇博客中有介绍,大家也可以google),mysql-python等. djangor ...
- Changing the working directory of VIM
Sometimes we want to open another file in the same folder with current editing file, what we can do ...
- EasyUI DataGrid及Pagination
接上一篇EasyUI项目驱动学习 DataGrid数据表格及Pagination分页一起介绍 一.通过<table>标记创建DataGrid,嵌套<th>标签定义列表 < ...
- Combo模糊匹配中文问题
茗洋Easy UI 1.3.2 部分问题解决系列专题[Combo模糊匹配中文问题 修复] 本次给大家带来的EasyUI的我研究拓展的新特性 我使用的是 EasyUI 1.3.2版本的,项目是ASP. ...