`

group by 在mysql和oracle中的差异

 
阅读更多
select * from addressbook_organization where parent_unid='12345' group by unid;


同样一句话,在mysql里面是正确的,在oracle里面是错误的。
细看之后,发现mysql在对这句话的处理有别于其他数据。在其他数据库中,要求含有group by的查询语句中,select后必须跟聚合函数或者在group by中的字段。

mysql对于上面这句的处理,有时候可以让我们偷懒。
他会按照unid分组,但只返回最新插入的那里记录!换句话说:
比如有这样2条记录:
id 1,parent_unid '12345' ,unid '23456'
id 2,parent_unid '12345' ,unid '23456'

那么在应用上面那句查询时,mysql会返回id=2的那条记录,因为这条记录比id=1后插入数据库。而同样的在oracle中应用这句查询的话,oracle直接就报ORA-00979:不是GROUP BY表达式。同样的情况在sybase中也会报这个错误!
分享到:
评论

相关推荐

    mysql和oracle区别.docx

    Oracle 和 MySQL 是两种广泛应用的关系型数据库管理系统(RDBMS),它们在很多方面有着显著的不同,以下将详细讨论这些差异。 1. **组函数使用规则**: 在 MySQL 中,组函数(如 COUNT、SUM 等)可以在 SELECT ...

    Mysql和oracle数据库分析.pdf

    在具体使用中,MySQL 和 Oracle 也有一些语法上的差异,例如在处理组函数时,MySQL 允许在 SELECT 语句中随意使用,而 Oracle 则要求所有列要么是组函数处理过的,要么出现在 GROUP BY 子句中。此外,MySQL 有 AUTO_...

    mysql和oracle区别.pdf

    ` 在 MySQL 中有效,但在 Oracle 中则需要配合 GROUP BY 子句。 2. **自动增长的数据类型**: - MySQL 提供了一个 AUTO_INCREMENT 关键字,用于创建自动增长的主键。当插入新记录时,这个字段的值会自动递增。而在...

    Mysql和oracle数据库分析.docx

    - **组函数规则**:MySQL允许在SELECT语句中随意使用组函数,而Oracle要求其他列要么是组函数结果,要么在GROUP BY子句中。 - **自动增长数据类型**:MySQL有自增列,Oracle则需创建序列并手动赋值。 在实际应用中...

    Oracle与MYSQL的几点区别

    - 在MySQL中,使用`GROUP BY`子句进行分组查询非常直观,可以轻松结合`COUNT`、`SUM`等聚合函数来完成数据统计。 - 示例:`SELECT name, COUNT(money) FROM user GROUP BY name;` - **Oracle**: - Oracle也支持...

    Oracle与MySQL的几点区别

    除了上述提到的主要区别外,在使用Oracle和MySQL的过程中,还可能遇到其他一些差异。例如,关于注释的使用,虽然两者都支持单行注释和多行注释,但具体语法上可能存在差异。了解这些差异对于有效地开发和维护基于这...

    持续更新, 整理mysql、oracle数据库相关 笔试面试题,主要为了应对面试过程中遇到的sql题目

    1. **选择查询(SELECT)**:理解如何从一个或多个表中选择数据,包括使用WHERE子句进行条件过滤,使用GROUP BY和HAVING对数据进行分组和过滤,以及使用ORDER BY进行排序。 2. **联接查询(JOIN)**:包括内连接...

    Oracle与MySQL的几点区别.docx

    - 在 MySQL 中,组函数(如 COUNT、SUM 等)可以在 SELECT 语句中与非聚合列一起使用,但 Oracle 要求如果使用了组函数,其他列要么也使用组函数处理,要么出现在 GROUP BY 子句中。例如,`SELECT name, COUNT...

    Oracle与MySQL的几点区别.pdf

    例如,`SELECT name, COUNT(money) FROM user` 在 MySQL 中有效,但在 Oracle 中则需要 GROUP BY name,因为 name 需要遵循分组规则。 2. **自动增长的数据类型处理**: MySQL 提供了 AUTO_INCREMENT 数据类型,...

    使用Group by分组统计.rar

    - 不同数据库系统对`GROUP BY`的语法和功能可能存在差异,如Oracle、MySQL和SQL Server。 综上所述,`GROUP BY`在SQL中扮演着数据分组和统计的角色,它帮助我们从大量数据中提取出关键信息,为数据分析和决策提供...

    Oracle 和 mysql的9点区别

    - 在MySQL中,组函数(如COUNT、SUM)可以在SELECT语句中随意与非聚合列一起使用,即使这些列未在GROUP BY子句中指定。但在Oracle中,如果查询中包含组函数,所有非聚合列都必须在GROUP BY子句中列出或通过组函数...

    关于sql的group by的分析

    在源码和工具层面,`GROUP BY`的实现可能因数据库管理系统(如MySQL、PostgreSQL、Oracle等)的不同而略有差异,但其核心概念和逻辑保持一致。开发者需要根据所使用的数据库系统查阅相关文档以获取更具体的语法和...

    人大金仓数据库适配mysql

    然而,在实际应用过程中,由于历史原因或其他需求,可能需要将原有的MySQL数据库迁移到人大金仓KingbaseES上。本文基于长期实践经验和参考资料,旨在为那些需要进行MySQL到KingbaseES迁移工作的朋友提供一份详细的...

    MySQL中英文参考手册

    - **SELECT语句**:用于从表中检索数据,支持WHERE、GROUP BY、HAVING、ORDER BY、JOIN等子句。 - **DML操作**:INSERT用于插入新记录,UPDATE用于修改记录,DELETE用于删除记录。 6. **索引**: - 索引能显著...

    orcle与mysql的sql语法区别.docx

    MySQL允许在SELECT语句中自由使用组函数,而Oracle要求如果使用了组函数,其他列要么也是经过组函数处理的,要么出现在GROUP BY子句中,否则会报错。 7. 自动增长的数据类型 MySQL提供自动增长的数据类型,如`AUTO_...

    MySQL完全教程.pdf

    教程会详细解释如何进行数据查询、插入、修改和删除,以及如何使用WHERE子句、JOIN操作、GROUP BY和HAVING子句进行复杂的数据筛选和分组。 五、索引与性能优化 索引可以显著提高查询速度,但也会占用额外的存储空间...

    MySQL8官方软件及安装教程&Navicat; Premium 12软件及crack方法

    同时,学习使用JOIN操作连接多个表,GROUP BY和HAVING子句进行分组筛选,以及子查询和聚合函数,能够提高数据库操作的效率。 Navicat Premium 12还提供了数据可视化功能,通过图表和报表展示数据,便于数据分析和...

Global site tag (gtag.js) - Google Analytics