首页 > 数据库 >记录mysql排序字段有重复值,分页数据错乱问题

记录mysql排序字段有重复值,分页数据错乱问题

时间:2023-08-09 15:36:42浏览次数:44  
标签:consume mysql 字段 limit time 错乱 排序 ORDER

引用 http://vsalw.com/9768.html

记录mysql排序字段有重复值,分页数据错乱问题,下面2个sql 除了分页limit外,其他都一样,

但是第三页的结果却包含部分第二页的数据。

SELECT
	id,
	show_flag,
	sort,
	vote_title,
	img_url,
	max_option_count,
	vote_option_type,
	begin_time,
	end_time,
	join_limit,
	create_time,
	update_time,
	create_user,
	update_user,
	is_deleted,
	delete_time,
	consume_flag,
	consume_type,
	consume_count,
	content 
FROM
	vote 
WHERE
	( show_flag = 1 AND is_deleted = 0 ) 
GROUP BY
	id 
ORDER BY
	begin_time DESC 
	LIMIT 20,
	10

查了一下MySQL官网,对这种情况做了介绍:

https://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html

“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列中有多个行具有相同的值,则服务器可以自由以任何顺序返回这些行,并且根据整体执行计划的不同,返回值可能会有所不同。 换句话说,这些行的排序顺序相对于无序列是不确定的。

解决方案:排序字段增加一个不可能重复的字段,如 order by integralnum ,id desc或begin_time_millisecond desc即可解决

标签:consume,mysql,字段,limit,time,错乱,排序,ORDER
From: https://www.cnblogs.com/ghostmen/p/17616930.html

相关文章

  • MySQL重置密码
    要重置MySQL密码,您需要遵循以下步骤:停止MySQL服务:在您重置密码之前,您需要停止正在运行的MySQL服务。可以使用操作系统的服务管理工具(如Windows的服务管理器)来停止MySQL服务。启动MySQL以跳过权限检查:在启动MySQL时,您可以使用特殊的启动参数来跳过权限检查,从......
  • MySQL配置文件my.cnf的理解
    MySQL配置文件my.cnf的理解一、缘由最近要接手数据库的维护工作,公司首选MySQL。对于MySQL的理解,我认为很多性能优化工作、主从主主复制都是在调整参数,来适应不同时期不同数量级的数据。故,理解透彻my.cnf里的参数是永恒的话题;只有理解透彻了参数设置,才能在某些方面对数据库进......
  • MySQL循环外开启事务的问题
    在Golang中使用GORM操作MySQL,并在循环外开启事务,可以实现在循环内的某一个操作失败时回滚整个事务。其他操作也会被回滚,确保数据的一致性。下面是一个简单的示例代码,演示了如何使用GORM在循环外开启事务并进行相关操作:packagemainimport( "fmt" "log" "gorm.io/d......
  • MySQL并发开启事务与隔离级别相关
    ......
  • MySQL修改my.cnf配置不生效的解决方法
    MySQL修改my.cnf配置不生效的解决方法 这篇文章主要介绍了MySQL修改my.cnf配置不生效的解决方法,简单分析了配置文件的执行顺序与原理并提出解决方法,需要的朋友可以参考下本文实例讲述了MySQL修改my.cnf配置不生效的解决方法。分享给大家供大家参考,具体如下:一、问题:修改了......
  • 数据库-mysql/postgresql/mongo/oracle/redis 物理备份与恢复的执行方式有
    以下是每个数据库的物理备份与恢复的执行方式示例:MySQL:备份:使用mysqldump命令进行备份。示例:mysqldump-uusername-pdatabase_name>backup.sql恢复:使用mysql命令从备份文件中恢复数据。示例:mysql-uusername-pdatabase_name<backup.sqlPostgreSQL:备份:使用pg_d......
  • MySQL中的锁知识点总结
    MVCC和加锁是解决并发事务带来的一致性问题的两种方式。共享锁简称为S锁,独占锁简称为X锁。S锁与S锁兼容;X锁与S锁不兼容,与X锁也不兼容。事务利用MVCC进行的读取操作成为一致性读,在读取记录前加锁的读取操作称为锁定读。InnoDB有两种语法来进行锁定读:select..lockinsharemode......
  • MySQL 管理表(增删改查)
    MySQL管理表:增加行:添加一行:insertintouservalues(42,"bbb","x",1003,1003,"teacher","/home/jingyaya3","/bin/bash");#添加所有列insertintotarena.user(name,uid,shell)values("aaa",1002,"/sbin/no......
  • 关于将预留单中增强字段带入物料凭证和会计凭证中
    1.业务需求预留中自定义文本字段“大项修”。根据预留创建物料凭证时,将该字段带入到物料凭证中,类似标准字段“项目文本”。并在物料凭证自动产生会计凭证后,将该字段带入到会计凭证行项目中。其中需要解决以上三张凭证对该字段的界面显示,以及预留对该字段的维护。解决接口中用BAP......
  • 修改mysql8.0的数据存储目录
     -------先查看datadir的路径------------------------------------usemysqlshowvariableslike'%datadir%';————————————————————————--datadir=/data/mysqldata/mysql   老的--datadir=/bigdata/new_mysqldata  新的———————......