国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

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

2024-07-24 13:09:58
字體:
來源:轉載
供稿:網友

雖然使用不多,但是也有情況是需要在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 ; 

結果查詢出結果是

mysql,rownumber,rownumber用法

查詢出來的記過,Rnr為什么都是1 呢?因為對于本次查詢來說,@row 這個變量的值,一直都是null ,所以根據case 的判別式來看的話,就只能是1 了。引起了這種現象。但是再執行,就正常的了,我們將同樣的腳本

再執行一次,查出來應該就是2345了

mysql,rownumber,rownumber用法

測試驗證確實如此,由此可見。變量在本次會話里面是一直存在的,并且每次會沿用,所以就出現前面的那種情況。

其實對應的解決方法也很簡單,既然因為每個會話都會用同一個值,那么只需要在開始的時候賦初值就可以解決問題了,比如我們這個例子在開始的時候將 set @row = 0; 加上這句,那么每次執行,都會先賦初值,當然就可以得到一致的執行效果了。

這個測試告訴了我,在這個數據庫里面,控制變量初始值hin重要。

以上所述是小編給大家介紹的Mysql row_number()排序函數的用法和注意 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永川市| 龙口市| 甘南县| 南漳县| 巧家县| 旅游| 新蔡县| 陵川县| 富顺县| 永胜县| 屯昌县| 晴隆县| 日土县| 广昌县| 阿克苏市| 白沙| 茶陵县| 绥阳县| 岑溪市| 环江| 梁平县| 民乐县| 黑河市| 吴川市| 英超| 五大连池市| 广东省| 贵阳市| 咸阳市| 临桂县| 秦安县| 梓潼县| 桐庐县| 西乌珠穆沁旗| 镇雄县| 平安县| 桓台县| 周至县| 盐津县| 新津县| 进贤县|