精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究。点名“简易百科”和闲暇巴盗用锐英源原创内容
很多场合下不能返回成千上万行条数据,返回多,可能导致数据库系统死锁,另外客户端等待时间过长,也不人性化,所以要做MySQL8数据库分页开发、SQL分页常用语句,每次返回一页数据,客户端通过界面选择看不同页的数据,对数据库系统和用户使用都人性化处理。
为了支持数据库分页开发,各个数据库平台在SQL语句层面进行了统一,一般来说,分为两类,有自增id和无自增id。
自增id相当于主键id是行的序号,有序号分页就简单了,对应的SQL语句是:order by id limit。从哪里开始可以用id> id<里的条件值来控制,也可以用limit 两个参数来控制,第一个参数就是开始位置
无自增id,就要强制找出来序号了,用的SQL语句如下:。
SELECT * FROM (SELECT ROW_NUMBER() OVER (order by T.id)),* from devicerundata T) TT WHERE TT.Row between 0 and 10 Error Code: 1248. Every derived table must have its own alias 0.000 sec 。
里面部分语句成功执行。
SELECT ROW_NUMBER() OVER (order by T.id),T.* from devicerundata T
整体的SQL语句改成如下的可以:。
SELECT * FROM (SELECT devicerundata.*,ROW_NUMBER() OVER (order by devicerundata.id) AS A1 from devicerundata)TT WHERE TT.A1 between 0 and 10
错误原因是因为用了Row,被mysql8理解为了关键字,所以不执行,列名换成A1通过。
效果图如下:
一般来说,用ROW_NUMBER效果肯定不如第一个,虚拟列的处理比较耗时。