MySQL order by顺序随机

使用mySql order by 字段
如果该字段存在多个同一值。
譬如:

idnamecreate_time
120200513
220200513
320200513

select * from tb_name order by create_time
你多运行几次,会发现,出现的数据顺序不是固定的,可能会出现红白蓝,白蓝红,蓝红白……
特别提醒:
order by 多个字段,多个字段组合的值相同时候,也会出现这种情况.
mysql会对order by 字段数据相同的数据进行随机排序,所以同一条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.
通俗点说就是,当出现多行相同值时,mysql会以随机的顺序返回查询结果,并且依据具体的执⾏计划会有不同。
解决建议:
综合表的数据结构进行改进。
譬如:
1.我的数据表,id是自增型(或者表里有其他id),那么我order by时候把唯一值的字段加上,就可以解决
2.依旧想只使用create_time,不想加入字段,那么应该考虑把时间准确到毫秒,在正常情况下,这个create_time不会重复。
3.你可以把order by这个字段直接建立索引,理论上来说,只要建立了索引,数据储存时候,它的位置顺序就会一定(我没有验证过,但应该可以)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值