MySQL5.7實現(xiàn)row_number()和over()函數(shù)
一、創(chuàng)建測試數(shù)據(jù)庫 db_test
-- 創(chuàng)建測試數(shù)據(jù)庫 db_test CREATE DATABASE /*!32312 IF NOT EXISTS*/`db_test` /*!40100 DEFAULT CHARACTER SET utf8 */;
二、使用 db_test 數(shù)據(jù)庫
-- 使用 db_test 數(shù)據(jù)庫 USE `db_test`; /*Table structure for table `test1` */
三、先刪除測試表看看
-- 先刪除測試表看看 DROP TABLE IF EXISTS `test1`;
四、創(chuàng)建測試表
-- 創(chuàng)建測試表 CREATE TABLE `test1` ( `id` int(10) NOT NULL, `score` int(20) DEFAULT NULL, `class` char(10) COLLATE utf8_bin DEFAULT NULL, `name` char(20) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
五、測試表刷數(shù)
-- 測試表刷數(shù) /*Data for the table `test1` */ insert into `test1`(`id`,`score`,`class`,`name`) values (1,100,'語文','張三'), (2,98,'語文','李四'), (3,98,'語文','王五'), (4,98,'數(shù)學(xué)','張三'), (5,96,'數(shù)學(xué)','李四'), (6,92,'數(shù)學(xué)','王五'), (7,85,'數(shù)學(xué)','張三'), (8,96,'語文','張三'), (9,96,'語文','張三'), (10,91,'語文','張三'), (11,91,NULL,'張三');
六、查詢測試表
-- 查詢測試表 select * from test1;
七、MySQL5.7實現(xiàn) row_number() over()函數(shù)的功能
-- MySQL5.7實現(xiàn) row_number() over()函數(shù)的功能
SELECT id
,class
,score
,rank
FROM (SELECT b.*
-- 定義用戶變量 @rownum 來記錄數(shù)據(jù)的行號。通過賦值語句 @rownum := @rownum + 1 來累加達(dá)到遞增行號。
,@rownum := @rownum+1
-- 如果當(dāng)前分組編號和上一次分組編號相同,則 @rank (對每一組的數(shù)據(jù)進(jìn)行編號)值加1,否則表示為新的分組,從1開始
,IF(@pdept = b.class, @rank := @rank + 1, @rank := 1) AS rank
-- 定義變量 @pdept 用來保存上一次的分組id
,@pdept := b.class
-- 這里的排序不確定是否需要,保險點還是加上吧
FROM (SELECT * FROM test1 a ORDER BY a.class, a.score DESC) b
-- 初始化自定義變量值
,(SELECT @rownum :=0, @pdept := NULL, @rank:=0) c
-- 該排序必須,否則結(jié)果會不對
ORDER BY b.class, b.score DESC) result
order by class, rank;到此這篇關(guān)于MySQL5.7實現(xiàn)row_number() over()函數(shù)的文章就介紹到這了,更多相關(guān)MySQL5.7 row_number() over()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql 5.7.5 m15 winx64安裝配置方法圖文教程
這篇文章主要為大家分享了mysql 5.7.15 m15 winx64安裝配置方法圖文教程,感興趣的朋友可以參考一下2016-09-09
MySQL中處理數(shù)據(jù)的并發(fā)一致性的實現(xiàn)示例
在MySQL中處理數(shù)據(jù)的并發(fā)一致性是確保多個用戶或應(yīng)用程序同時訪問和修改數(shù)據(jù)庫時,不會導(dǎo)致數(shù)據(jù)沖突、數(shù)據(jù)丟失或數(shù)據(jù)不一致,MySQL通過事務(wù)和鎖機制來管理并發(fā),下面就來詳細(xì)的了解一下2025-08-08
mysql5.6批量設(shè)置表ROW_FORMAT =DYNAMIC問題
這篇文章主要介紹了mysql5.6批量設(shè)置表ROW_FORMAT =DYNAMIC問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
mysql數(shù)據(jù)庫空間統(tǒng)計sql代碼示例
在mysql中有一個information_schema數(shù)據(jù)庫,這個數(shù)據(jù)庫中裝的是mysql的元數(shù)據(jù),包括數(shù)據(jù)庫信息、數(shù)據(jù)庫中表的信息等,這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫空間統(tǒng)計sql的相關(guān)資料,需要的朋友可以參考下2024-08-08
linux系統(tǒng)中mysql數(shù)據(jù)庫的導(dǎo)入和導(dǎo)出
本文給大家簡單記錄了一下在linux系統(tǒng)中mysql數(shù)據(jù)庫的導(dǎo)入和導(dǎo)出的方法,有相同需求的小伙伴可以參考下2016-02-02
MySQL 聯(lián)合索引與Where子句的優(yōu)化 提高數(shù)據(jù)庫運行效率
網(wǎng)站系統(tǒng)上線至今,數(shù)據(jù)量已經(jīng)不知不覺上到500M,近8W記錄了。涉及數(shù)據(jù)庫操作的基本都是變得很慢了,這篇文章主要是說明配置并不是數(shù)據(jù)庫操作慢的主要原因2012-01-01

