本節(jié)演示數(shù)據(jù)庫(kù)為mysql5.7
接下來(lái)首先看下表結(jié)構(gòu)
image.png
下面說(shuō)下這節(jié)的需求
image.png
products商品表及數(shù)據(jù)存在本地yii數(shù)據(jù)庫(kù)下面的products表中
image.png
首先了解下會(huì)話變量
一個(gè)navicat里面的查詢編輯器就是一個(gè)會(huì)話
image.png
只要不關(guān)閉這個(gè)會(huì)話(設(shè)置的變量就一直存在)
image.png
但是在別的會(huì)話里引用這個(gè)變量為空
image.png
下面看下變量賦值
image.png
image.png
image.png
兩種方式都可以賦值 但是在select語(yǔ)句里面賦值必須有:= set里面的:冒號(hào)可以省略
其中as 是 給列名起別名 而且select里面是會(huì)把變量打印出來(lái)
image.png
下面把會(huì)話變量和sql語(yǔ)句排序結(jié)合在一起
首先查看下表里面數(shù)據(jù) 按照p_view 倒排序
image.png
image.png
加行號(hào)
image.png
可以看見(jiàn)我們用了兩條sql語(yǔ)句實(shí)現(xiàn)的行號(hào)加一的功能
最開(kāi)始給@rownum初始值為1
如果不給@rownum初始值結(jié)果如下
image.png
結(jié)果都為null 因?yàn)闆](méi)初始值
如果不想使用兩條sql語(yǔ)句 那應(yīng)該怎么做呢
image.png
可以使用ifnull函數(shù) mysql自帶的函數(shù) 有兩個(gè)參數(shù) 為表達(dá)式 如果表達(dá)式一不為空返回表達(dá)式一 否則返回表達(dá)式二
image.png
但是這樣做有個(gè)問(wèn)題 就是會(huì)話里面的變量不結(jié)束 每次運(yùn)行sql行號(hào)都會(huì)增加
下面看下如何解決這個(gè)問(wèn)題
最終解決方案 就是采用另外一張不存在的表 對(duì)@rownum進(jìn)行賦值
image.png