程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql row number()排序函數的用法和留意

Mysql row number()排序函數的用法和留意

編輯:MySQL綜合教程

Mysql row number()排序函數的用法和留意。本站提示廣大學習愛好者:(Mysql row number()排序函數的用法和留意)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql row number()排序函數的用法和留意正文


固然應用不多,然則也無情況是須要在mysql 外面寫語句開辟功效的。在sql server 應用慣了,習氣了應用row_number() 函數停止排序,然則mysql 確沒有如許一個函數。然後找到了po主寫的一篇 文章。經由過程變量賦值來查詢的。(PS 我測試的版本是mysql 5.6)

先建表

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; 

然後拔出測試數據,應用po主引見的辦法來測試

insert into test(Col1,Col2,Col3,Col4) values (1,2,3,4),(1,2,6,5),(1,2,7,8),(1,"激起",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 ; 

成果查詢出成果是

查詢出來的記功,Rnr為何都是1 呢?由於關於本次查詢來講,@row 這個變量的值,一向都是null ,所以依據case 的辨別式來看的話,就只能是1 了。惹起了這類景象。然則再履行,就正常的了,我們將異樣的劇本

再履行一次,查出來應當就是2345了

測實驗證確切如斯,因而可知。變量在本次會話外面是一向存在的,而且每次會沿用,所以就湧現後面的那種情形。

其實對應的處理辦法也很簡略,既然由於每一個會話都邑用統一個值,那末只須要在開端的時刻賦初值便可以處理成績了,好比我們這個例子在開端的時刻將 set @row = 0; 加上這句,那末每次履行,都邑先賦初值,固然便可以獲得分歧的履行後果了。

這個測試告知了我,在這個數據庫外面,掌握變量初始值hin主要。

以上所述是小編給年夜家引見的Mysql row_number()排序函數的用法和留意 ,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved