本节演示数据库为mysql5.7
接下来首先看下表结构
下面说下这节的需求
products商品表及数据存在本地yii数据库下面的products表中
首先了解下会话变量
一个navicat里面的查询编辑器就是一个会话
只要不关闭这个会话(设置的变量就一直存在)
但是在别的会话里引用这个变量为空
下面看下变量赋值
两种方式都可以赋值 但是在select语句里面赋值必须有:= set里面的:冒号可以省略
其中as 是 给列名起别名 而且select里面是会把变量打印出来
下面把会话变量和sql语句排序结合在一起
首先查看下表里面数据 按照p_view 倒排序
加行号
可以看见我们用了两条sql语句实现的行号加一的功能
最开始给@rownum初始值为1
如果不给@rownum初始值结果如下
结果都为null 因为没初始值
如果不想使用两条sql语句 那应该怎么做呢
可以使用ifnull函数 mysql自带的函数 有两个参数 为表达式 如果表达式一不为空返回表达式一 否则返回表达式二
但是这样做有个问题 就是会话里面的变量不结束 每次运行sql行号都会增加
下面看下如何解决这个问题
最终解决方案 就是采用另外一张不存在的表 对@rownum进行赋值