关于MySQL与SQLLite的Group By排序原理的区别

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

当我们对一个表的记录进行group by的时候,在未明确使用sum、min、max等聚合函数的时候,group by 的排序规则,如下对比了MYSQL和SQLLite

大家都知道,group by的时候,数据库是遍历数据库表的所有记录进行匹配处理的。

下面的SQL目的是为了查询表中groupid相同的记录中,最新时间的一条消息,给出mysql和sqllite的语句区别:

MYSQL语句

SELECT * FROM(
SELECT t.id,t.data_id,t.send_username,t.recv_username,t.message,IFNULL(NULLIF(t.groupid,''),t.recv_username) AS groupid,t.`created_date`
FROM tb_push_data t WHERE STATUS = 0 ORDER BY t.`created_date` desc,t.id desc
) t1
GROUP BY t1.groupid
ORDER BY t1.`created_date` DESC,t1.id DESC

SQLLite语句

select * from(
select t.id,t.data_id,t.login_username,t.send_username,t.recv_username,t.message,ifnull(nullif(t.groupid,''),t.send_username) as groupid,t.time
from tb_recved_data t where status = 0 order by t.time asc, t.id asc
) t1
group by t1.groupid
order by t1.time desc,t1.id desc

大家注意对比SQL可以发现,子查询最后的ORDER BY 中,在MYSQL中使用 ASC,而在SQLLite中我们使用 DESC

原因就是:MYSQL在遍历表记录的时候当发现重复的group字段时,是忽略的。而SQLLite是覆盖的。

所以我们为了获取最晚发送的一条记录时,在mysql中使用desc,sqllite中使用asc

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
存储 SQL 运维
TIDB和MySQL的区别
TIDB和MySQL的区别
157 0
|
1月前
|
存储 缓存 关系型数据库
Mysql的两种存储引擎以及区别
Mysql的两种存储引擎以及区别
14 1
|
2月前
|
SQL 人工智能 关系型数据库
mysql中in 和exists的区别
mysql中in 和exists的区别
|
7天前
|
存储 关系型数据库 MySQL
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
18 0
|
14天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
1月前
|
存储 人工智能 关系型数据库
详细介绍TiDB 与 MySQL 中的常用字符集及排序规则
一文理清 TiDB 与 MySQL 中的常用字符集及排序规则
115 6
|
1月前
|
存储 缓存 关系型数据库
MySQL两种存储引擎及区别
MySQL两种存储引擎及区别
20 4
MySQL两种存储引擎及区别
|
9天前
|
存储 关系型数据库 MySQL
深入理解MySQL中varchar和text的区别
在MySQL中,varchar和text都是用于存储文本数据的数据类型。varchar是可变长度字符串,存储时按实际长度分配空间,适合存储较短的、长度可变的字符串,如用户名。text类型用于存储大量文本,始终占用足够空间,适合文章内容。varchar在存储和查询时可能更快,可被索引,而text需特殊搜索技术。在数据库设计时,应根据存储需求和性能平衡选择。
38 0
|
9天前
|
SQL 关系型数据库 MySQL
mysql基本查询、运算符、排序和分页
mysql基本查询、运算符、排序和分页
|
1月前
|
存储 SQL 关系型数据库
[MySQL]事务原理之redo log,undo log
[MySQL]事务原理之redo log,undo log