sql实现select取数行号
2019-08-04 本文已影响0人
在路上phper
本节演示数据库为mysql5.7
接下来首先看下表结构

下面说下这节的需求

products商品表及数据存在本地yii数据库下面的products表中

首先了解下会话变量
一个navicat里面的查询编辑器就是一个会话

只要不关闭这个会话(设置的变量就一直存在)

但是在别的会话里引用这个变量为空

下面看下变量赋值



两种方式都可以赋值 但是在select语句里面赋值必须有:= set里面的:冒号可以省略
其中as 是 给列名起别名 而且select里面是会把变量打印出来

下面把会话变量和sql语句排序结合在一起
首先查看下表里面数据 按照p_view 倒排序


加行号

可以看见我们用了两条sql语句实现的行号加一的功能
最开始给@rownum初始值为1
如果不给@rownum初始值结果如下

结果都为null 因为没初始值
如果不想使用两条sql语句 那应该怎么做呢

可以使用ifnull函数 mysql自带的函数 有两个参数 为表达式 如果表达式一不为空返回表达式一 否则返回表达式二

但是这样做有个问题 就是会话里面的变量不结束 每次运行sql行号都会增加
下面看下如何解决这个问题
最终解决方案 就是采用另外一张不存在的表 对@rownum进行赋值
