美文网首页
sql实现select取数行号

sql实现select取数行号

作者: 在路上phper | 来源:发表于2019-08-04 22:37 被阅读0次

本节演示数据库为mysql5.7
接下来首先看下表结构


image.png

下面说下这节的需求


image.png
products商品表及数据存在本地yii数据库下面的products表中
image.png
首先了解下会话变量

一个navicat里面的查询编辑器就是一个会话


image.png
只要不关闭这个会话(设置的变量就一直存在)
image.png
但是在别的会话里引用这个变量为空
image.png
下面看下变量赋值
image.png
image.png
image.png
两种方式都可以赋值 但是在select语句里面赋值必须有:= set里面的:冒号可以省略

其中as 是 给列名起别名 而且select里面是会把变量打印出来


image.png
下面把会话变量和sql语句排序结合在一起
首先查看下表里面数据 按照p_view 倒排序
image.png
image.png
加行号
image.png
可以看见我们用了两条sql语句实现的行号加一的功能
最开始给@rownum初始值为1
如果不给@rownum初始值结果如下
image.png
结果都为null 因为没初始值
如果不想使用两条sql语句 那应该怎么做呢
image.png
可以使用ifnull函数 mysql自带的函数 有两个参数 为表达式 如果表达式一不为空返回表达式一 否则返回表达式二
image.png
但是这样做有个问题 就是会话里面的变量不结束 每次运行sql行号都会增加
下面看下如何解决这个问题
最终解决方案 就是采用另外一张不存在的表 对@rownum进行赋值
image.png

相关文章

网友评论

      本文标题:sql实现select取数行号

      本文链接:https://www.haomeiwen.com/subject/lakudctx.html