登录
首页 >  数据库 >  MySQL

Mysql给普通分页查询结果加序号实操

来源:脚本之家

时间:2022-12-28 17:49:54 247浏览 收藏

本篇文章给大家分享《Mysql给普通分页查询结果加序号实操》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

一、效果展示

1、普通查询加序号

SELECT t1.NAME,( @i := @i + 1 ) AS '序号' 
FROM t1,( SELECT @i := 0 ) AS itable;

这种情况遇上分页时会出现每次翻页都从1开始重新计算,这种情况可以使用分页偏移量作为开始计算数,解决方案如下:

2、分页查询加序号

SELECT ( @i := @i + 1 ) AS '序号' ,t1.NAME
FROM t1,( SELECT @i := 2 ) AS itable
limit 2,5
SELECT ( @i := @i + 1 ) AS '序号' ,t1.NAME
FROM t1,( SELECT @i := #{startSize} ) AS itable
limit #{startSize},#{pageSize};

二、表结构以及数据

CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `jgid` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

INSERT INTO `avlicy`.`t1`(`id`, `name`, `jgid`) VALUES (1, '二二', 2);
INSERT INTO `avlicy`.`t1`(`id`, `name`, `jgid`) VALUES (2, '李四', 2);
INSERT INTO `avlicy`.`t1`(`id`, `name`, `jgid`) VALUES (4, '七七', 3);
INSERT INTO `avlicy`.`t1`(`id`, `name`, `jgid`) VALUES (5, '小猕猴', 1);
INSERT INTO `avlicy`.`t1`(`id`, `name`, `jgid`) VALUES (6, '小米粥', 1);
INSERT INTO `avlicy`.`t1`(`id`, `name`, `jgid`) VALUES (7, '小哈吧', 1);

三、解释说明

1、解释

  • (@i:=@i+1) 也可以写成 @i:=@i+1 ,加括号是为了视觉上更清晰。它代表的意思是:变量i 加1 赋值给变量i,在定义好一个变量后每次查询都会给这个变量自增,每次执行查询语句获取结果后就不需要这个变量自增了
  • (SELECT @i:=0) AS itable,定义用户变量i,设置初始值为0,然后将它作为派生表使用,AS定义了表的别名。
  • SET @i=0 。定义用户变量i,赋初值为0,

2、相关知识点

  • MySQL定义用户变量的方式:select @变量名 ,上面的SQL语句中,变量的名字是 i
  • 用户变量赋值:一种是直接用"=“号,另一种是用”:="号。

3、= 和 := 的区别:

使用set命令对用户变量进行赋值时,两种方式都可以使用
即:SET @变量名=xxx 或 SET @变量名:=xxx

使用select语句对用户变量进行赋值时,只能使用":=“方式,因为在select语句中,”="号被看作是比较操作符。即:SELECT @变量名:=xxx

  • ①:用户变量
  • ②:派生表
  • ③:AS设置别名

以上就是《Mysql给普通分页查询结果加序号实操》的详细内容,更多关于mysql的资料请关注golang学习网公众号!

声明:本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表