mysql limit 分页问题

SELECT * FROM city.u_device u where deviceType =1 limit 0,4;

查询结果:
24, 1, '格力', 'eeee', '04A3D3DEC8EFA99A21FB84A893D60FF7'
21, 1, '格力', 'TS2012', '04A3D3DEC8EFA99A21FB84A893D60FF7'
88, 1, '格力', 'TS202', '04A3D3DEC8EFA99A21FB84A893D60FF7'
31, 1, '格力', 'TS9999', '04A3D3DEC8EFA99A21FB84A893D60FF7'

SELECT * FROM city.u_device u where deviceType =1 limit 0,20;
查询结果:
21, 1, '格力', 'TS2012', '04A3D3DEC8EFA99A21FB84A893D60FF7'
22, 1, '海尔', 'TD212', '04A3D3DEC8EFA99A21FB84A893D60FF7'
23, 1, '海尔', 'rrrrr', '04A3D3DEC8EFA99A21FB84A893D60FF7'
24, 1, '格力', 'eeee', '04A3D3DEC8EFA99A21FB84A893D60FF7'
31, 1, '格力', 'TS9999', '04A3D3DEC8EFA99A21FB84A893D60FF7'
88, 1, '格力', 'TS202', '04A3D3DEC8EFA99A21FB84A893D60FF7'

我不是很理解,mysql是不是在每页大小小的时候,不是按照id进行排序,如果每页大小大的时候,是按照id排序的?

7个回答

这个。。。好像和limit没啥关系

是和select有关系,没有Order by的时候。。或者排序的条件不是唯一的时候,是可能会出现排序随机的情况的 mysql和oracle都是按照物理存储顺序显示的。。也就是表扫描的顺序

aa1aa3
爱上一条鱼 也就是说 select语句默认是按照表扫描的顺序显示 不进行额外的排序
接近 8 年之前 回复

如果你没有指定排序,那么就不要指望数据库每次返回的结果集顺序都一致。你没有指定排序,数据库引擎是不会花时间进行排序处理的。所以获得的结果集顺序是随机的。不过一般都是从头到尾顺序处理表,所以很多时候看起来就好像用ID排序一样。

zjfgf
zjfgf 非常感谢大家的回答
接近 8 年之前 回复

自己显示指定排序就好了,order by id

zjfgf
zjfgf 非常感谢大家的回答
接近 8 年之前 回复

首先看你id是否是主键 如果是主键默认会按这个排序
另外分页查询加上order by 会避免重复数据的问题

zjfgf
zjfgf 非常感谢大家的回答
接近 8 年之前 回复

如果你建立了主键索引,mysql 默认按照主键排序 asc

如果没有,则是随即,一般情况下,都是顺序来的

其它索引如果不指定的话,也没用,只有用order by 指定,才会按照你需要的排序进行

zjfgf
zjfgf 非常感谢大家的回答
接近 8 年之前 回复

如果id是主键则默认升序排序,如果不是主键随机(具体要看其所在记录的主键值)!

zjfgf
zjfgf 非常感谢大家的回答
接近 8 年之前 回复

直接指定id排序 或者创建时间排序好了,可以保证每次的顺序都一样

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐