MySQL自動(dòng)為查詢數(shù)據(jù)結(jié)果加序號(hào)
數(shù)據(jù)表
DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id INT(11) NOT NULL auto_increment, userid VARCHAR(20) NOT NULL COMMENT '用戶id', subject VARCHAR(20) COMMENT '科目', score DOUBLE COMMENT '成績(jī)', PRIMARY KEY(id) )ENGINE = INNODB DEFAULT CHARSET = utf8; INSERT INTO tb_score(userid,subject,score) VALUES ('001','語(yǔ)文',90); INSERT INTO tb_score(userid,subject,score) VALUES ('001','數(shù)學(xué)',92); INSERT INTO tb_score(userid,subject,score) VALUES ('001','英語(yǔ)',80); INSERT INTO tb_score(userid,subject,score) VALUES ('002','語(yǔ)文',88); INSERT INTO tb_score(userid,subject,score) VALUES ('002','數(shù)學(xué)',90); INSERT INTO tb_score(userid,subject,score) VALUES ('002','英語(yǔ)',75.5); INSERT INTO tb_score(userid,subject,score) VALUES ('003','語(yǔ)文',70); INSERT INTO tb_score(userid,subject,score) VALUES ('003','數(shù)學(xué)',85); INSERT INTO tb_score(userid,subject,score) VALUES ('003','英語(yǔ)',90); INSERT INTO tb_score(userid,subject,score) VALUES ('003','政治',82);
MySQL給查詢加序號(hào)
一種普遍的解決方法是:通過(guò)定義用戶變量生成序號(hào)
舉例:查詢表中的數(shù)據(jù)并加上序號(hào),對(duì)應(yīng)的SQL為:
SELECT id,userid,subject,score, (@i :=@i + 1) AS '序號(hào)' FROM tb_score, (SELECT @i := 0) AS itable;
+----+--------+---------+-------+--------+ | id | userid | subject | score | 序號(hào) | +----+--------+---------+-------+--------+ | 1 | 001 | 語(yǔ)文 | 90 | 1 | | 2 | 001 | 數(shù)學(xué) | 92 | 2 | | 3 | 001 | 英語(yǔ) | 80 | 3 | | 4 | 002 | 語(yǔ)文 | 88 | 4 | | 5 | 002 | 數(shù)學(xué) | 90 | 5 | | 6 | 002 | 英語(yǔ) | 75.5 | 6 | | 7 | 003 | 語(yǔ)文 | 70 | 7 | | 8 | 003 | 數(shù)學(xué) | 85 | 8 | | 9 | 003 | 英語(yǔ) | 90 | 9 | | 10 | 003 | 政治 | 82 | 10 | +----+--------+---------+-------+--------+ 10 rows in set (0.00 sec)
SELECT *, (@i :=@i + 1) AS '序號(hào)' FROM tb_score;
+----+--------+---------+-------+--------+ | id | userid | subject | score | 序號(hào) | +----+--------+---------+-------+--------+ | 1 | 001 | 語(yǔ)文 | 90 | 11 | | 2 | 001 | 數(shù)學(xué) | 92 | 12 | | 3 | 001 | 英語(yǔ) | 80 | 13 | | 4 | 002 | 語(yǔ)文 | 88 | 14 | | 5 | 002 | 數(shù)學(xué) | 90 | 15 | | 6 | 002 | 英語(yǔ) | 75.5 | 16 | | 7 | 003 | 語(yǔ)文 | 70 | 17 | | 8 | 003 | 數(shù)學(xué) | 85 | 18 | | 9 | 003 | 英語(yǔ) | 90 | 19 | | 10 | 003 | 政治 | 82 | 20 | +----+--------+---------+-------+--------+ 10 rows in set (0.00 sec)
或者
SET @i=0; SELECT id,userid,subject,score,@i:=@i+1 AS '序號(hào)' FROM tb_score;
+----+--------+---------+-------+--------+ | id | userid | subject | score | 序號(hào) | +----+--------+---------+-------+--------+ | 1 | 001 | 語(yǔ)文 | 90 | 1 | | 2 | 001 | 數(shù)學(xué) | 92 | 2 | | 3 | 001 | 英語(yǔ) | 80 | 3 | | 4 | 002 | 語(yǔ)文 | 88 | 4 | | 5 | 002 | 數(shù)學(xué) | 90 | 5 | | 6 | 002 | 英語(yǔ) | 75.5 | 6 | | 7 | 003 | 語(yǔ)文 | 70 | 7 | | 8 | 003 | 數(shù)學(xué) | 85 | 8 | | 9 | 003 | 英語(yǔ) | 90 | 9 | | 10 | 003 | 政治 | 82 | 10 | +----+--------+---------+-------+--------+ 10 rows in set (0.00 sec)
解釋說(shuō)明
1、(@i:=@i+1)
也可以寫(xiě)成 @i:=@i+1
,加括號(hào)是為了視覺(jué)上更清晰。
它代表的意思是:變量 i
加 1
賦值給變量 i
,在定義好一個(gè)變量后每次查詢都會(huì)給這個(gè)變量自增,每次執(zhí)行查詢語(yǔ)句獲取結(jié)果后就不需要這個(gè)變量自增了。
2、(SELECT @i:=0) AS itable
,定義用戶變量 i
,設(shè)置初始值為 0
,然后將它作為派生表使用,AS 定義了表的別名。
3、SET @i=0
。定義用戶變量 i
,賦初值為 0
。
相關(guān)知識(shí)點(diǎn)
1、MySQL定義用戶變量的方式:
select @變量名
,上面的SQL語(yǔ)句中,變量的名字是 i
。
2、用戶變量賦值:一種是直接用 "="
號(hào),另一種是用 ":="
號(hào)。
=
和 :=
的區(qū)別
使用 set 命令對(duì)用戶變量進(jìn)行賦值時(shí),兩種方式都可以使用,即:SET @變量名=xxx
或 SET @變量名:=xxx
使用 select 語(yǔ)句對(duì)用戶變量進(jìn)行賦值時(shí),只能使用 ":=“
方式,因?yàn)樵?select 語(yǔ)句中,”="
號(hào)被看作是比較操作符。
即:SELECT @變量名:=xxx
:
①:用戶變量
②:派生表
③:AS設(shè)置別名
到此這篇關(guān)于MySQL自動(dòng)為查詢數(shù)據(jù)結(jié)果加序號(hào)的文章就介紹到這了,更多相關(guān)MySQL給查詢加序號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL中的自定義函數(shù)(CREATE FUNCTION)
這篇文章主要介紹了MySQL中的自定義函數(shù)(CREATE FUNCTION),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06數(shù)據(jù)庫(kù)SQL調(diào)優(yōu)的幾種方式匯總
在項(xiàng)目中,SQL的調(diào)優(yōu)對(duì)項(xiàng)目的性能來(lái)講至關(guān)重要,所有掌握常見(jiàn)的SQL調(diào)優(yōu)方式是必不可少的,下面這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫(kù)SQL調(diào)優(yōu)的幾種方式,需要的朋友可以參考下2022-10-10MySQL觸發(fā)器 Update觸發(fā)Insert失敗
這篇文章主要介紹了MySQL觸發(fā)器 Update觸發(fā)Insert失敗 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07MySQL加減間隔時(shí)間函數(shù)DATE_ADD和DATE_SUB的實(shí)現(xiàn)
mysql中內(nèi)置函數(shù)date_add 和 date_sub能對(duì)指定的時(shí)間進(jìn)行增加或減少一個(gè)指定的時(shí)間間隔,本文主要介紹了MySQLDATE_ADD和DATE_SUB的實(shí)現(xiàn),感興趣的可以了解一下2024-09-09Datagrip2020下載MySQL驅(qū)動(dòng)失敗的問(wèn)題
這篇文章主要介紹了Datagrip2020下載MySQL驅(qū)動(dòng)失敗的問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09檢查mysql是否成功啟動(dòng)的方法(bat+bash)
這篇文章主要介紹了檢查mysql是否成功啟動(dòng)的方法(bat+bash),如果mysql沒(méi)有啟動(dòng)則開(kāi)啟服務(wù),需要的朋友可以參考下2016-06-06MySQL數(shù)據(jù)庫(kù)索引原理及優(yōu)化策略
MySQL數(shù)據(jù)庫(kù)索引是一種數(shù)據(jù)結(jié)構(gòu),用于提高數(shù)據(jù)查詢的效率,加快數(shù)據(jù)檢索的速度。索引基于樹(shù)結(jié)構(gòu)實(shí)現(xiàn),可以通過(guò)B+樹(shù)等算法來(lái)優(yōu)化索引效率。MySQL中常見(jiàn)的索引類(lèi)型包括主鍵索引、唯一索引、普通索引、全文索引等2023-04-04