MySQL Order By排序混乱问题

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 做积分排行榜页面时, 发现vue key值冲突, 如下: 因为key为数据在mysql中的主键, 在排除前端错误之后, 判断是mysql排序问题. mysql排序sql如下: 该sql使用score,和create_time作为排序条件, 查询结果如下: 结果乱序了.

问题描述

    做积分排行榜页面时, 发现vue key值重复,如下:

a494899da5fff619851364885c3cf464272c6325

    此处的key值为数据在mysql中的主键,在排除前端错误之后,判断是mysql排序问题. mysql排序sql如下:

b6f23b857d91e484db9ee5a174befdebffd1a96f

    该sql使用score和create_time作为排序条件,查询结果如下:

e412e9f2bd38b1dc310a87f777b55cbb2b0426ec5e7d50809220aff4f35779a3b689a6163efd51fd

       结果确实乱序了。

查找解决方案

       查找原因,发现score和create_time存在相同值,当相同的score和create_time有多条数据时,mysql会对这些数据进行随机排序,所以同一条SQL查出的结果会出现排序不同的情况。

       mysql官网对此有一些描述:

     If multiple rows have identical values in the ORDER BY columns, the server is free to return those rows in any order, 
     and may do so differently depending on the overall execution plan. 
     In other words, the sort order of those rows is nondeterministic with respect to the nonordered columns.
       如果order by的字段有多个行都有相同的值,mysql会以随机的顺序返回查询结果,并且依据具体的执行计划会有不同。
     If it is important to ensure the same row order with and without LIMIT, 
     include additional columns in the ORDER BY clause to make the order deterministic. 
     For example, if id values are unique, you can make rows for a given category value appear in id order by sorting like this:
      如果排列的顺序对你很重要的话,可以额外添加排序条件,例如id字段是唯一的,可以考虑在排序字段中额外加个id去确保顺序稳定。

      我的方案: 排序条件改为 ORDER BY sas.score DESC,sas.statistics_point_id。statistics_point_id是该表的主键,问题解决了。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
自然语言处理 关系型数据库 MySQL
如何在mysql数据库里进行文本的相似度排序?
【8月更文挑战第28天】如何在mysql数据库里进行文本的相似度排序?
375 62
|
25天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
1月前
|
SQL 搜索推荐 关系型数据库
MySQL 如何实现 ORDER BY 排序?
本文详细解析了MySQL中`ORDER BY`的实现原理及优化方法。通过解析与优化、执行及多种优化技术,如索引利用、内存排序、外部排序等,帮助你提升排序性能。了解其背后的机制,可显著优化查询效率。
40 4
|
1月前
|
SQL 搜索推荐 关系型数据库
MySQL 如何实现 ORDER BY 排序?
在实际开发中,我们经常会使用 MySQL 的 `ORDER BY`进行排序,那么,`ORDER BY`是如何实现的排序的?我们该如何优化 `ORDER BY`的排序性能?这篇文章,我们来聊一聊。
33 3
|
2月前
|
算法 关系型数据库 MySQL
MySQL高级篇——排序、分组、分页优化
排序优化建议、案例验证、范围查询时索引字段选择、filesort调优、双路排序和单路排序、分组优化、带排序的深分页优化
MySQL高级篇——排序、分组、分页优化
|
2月前
|
自然语言处理 关系型数据库 MySQL
match如何在mysql数据库里进行文本的相似度排序?
【9月更文挑战第1天】match如何在mysql数据库里进行文本的相似度排序?
113 1
|
15天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
29 1
|
17天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
30 4
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
64 3
Mysql(4)—数据库索引
|
24天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
122 1

热门文章

最新文章

下一篇
无影云桌面