《Mysql應(yīng)用Mysql row number()排序函數(shù)的用法和注意》要點(diǎn):
本文介紹了Mysql應(yīng)用Mysql row number()排序函數(shù)的用法和注意,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
雖然使用不多,但是也有情況是需要在mysql 里面寫(xiě)語(yǔ)句開(kāi)發(fā)功能的.在sql server 使用慣了,習(xí)慣了使用row_number() 函數(shù)進(jìn)行排序,但是mysql 確沒(méi)有這樣一個(gè)函數(shù).然后找到了po主寫(xiě)的一篇 文章.通過(guò)變量賦值來(lái)查詢的.(PS 我測(cè)試的版本是mysql 5.6)
MYSQL數(shù)據(jù)庫(kù)
先建表
MYSQL數(shù)據(jù)庫(kù)
CREATE TABLE `test` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Col1` varchar(50) DEFAULT NULL, `Col2` varchar(50) DEFAULT NULL, `Col3` int(11) DEFAULT NULL, `Col4` float DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
然后插入測(cè)試數(shù)據(jù),使用po主介紹的辦法來(lái)測(cè)試
MYSQL數(shù)據(jù)庫(kù)
insert into test(Col1,Col2,Col3,Col4) values (1,2,3,4),(1,2,6,5),(1,2,7,8),(1,"激發(fā)",5,7); delimiter // select @row:=case when @row is null then 1 else @row+1 end as RNr, ID,Col1,Col2,Col3,Col4 from test ; // delimiter ;
結(jié)果查詢出結(jié)果是
MYSQL數(shù)據(jù)庫(kù)
MYSQL數(shù)據(jù)庫(kù)
查詢出來(lái)的記過(guò),Rnr為什么都是1 呢?因?yàn)閷?duì)于本次查詢來(lái)說(shuō),@row 這個(gè)變量的值,一直都是null ,所以根據(jù)case 的判別式來(lái)看的話,就只能是1 了.引起了這種現(xiàn)象.但是再執(zhí)行,就正常的了,我們將同樣的腳本
MYSQL數(shù)據(jù)庫(kù)
再執(zhí)行一次,查出來(lái)應(yīng)該就是2345了
MYSQL數(shù)據(jù)庫(kù)
MYSQL數(shù)據(jù)庫(kù)
測(cè)試驗(yàn)證確實(shí)如此,由此可見(jiàn).變量在本次會(huì)話里面是一直存在的,并且每次會(huì)沿用,所以就出現(xiàn)前面的那種情況.
MYSQL數(shù)據(jù)庫(kù)
其實(shí)對(duì)應(yīng)的解決辦法也很簡(jiǎn)單,既然因?yàn)槊總€(gè)會(huì)話都會(huì)用同一個(gè)值,那么只需要在開(kāi)始的時(shí)候賦初值就可以解決問(wèn)題了,比如我們這個(gè)例子在開(kāi)始的時(shí)候?qū)?set @row = 0; 加上這句,那么每次執(zhí)行,都會(huì)先賦初值,當(dāng)然就可以得到一致的執(zhí)行效果了.
MYSQL數(shù)據(jù)庫(kù)
這個(gè)測(cè)試告訴了我,在這個(gè)數(shù)據(jù)庫(kù)里面,控制變量初始值hin重要.
MYSQL數(shù)據(jù)庫(kù)
以上所述是小編給大家介紹的Mysql row_number()排序函數(shù)的用法和注意 ,希望對(duì)大家有所贊助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的.在此也非常感謝大家對(duì)維易PHP網(wǎng)站的支持!MYSQL數(shù)據(jù)庫(kù)
《Mysql應(yīng)用Mysql row number()排序函數(shù)的用法和注意》是否對(duì)您有啟發(fā),歡迎查看更多與《Mysql應(yīng)用Mysql row number()排序函數(shù)的用法和注意》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/13098.html