MySQL自動為查詢數(shù)據(jù)結(jié)果加序號
數(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 '成績',
PRIMARY KEY(id)
)ENGINE = INNODB DEFAULT CHARSET = utf8;
INSERT INTO tb_score(userid,subject,score) VALUES ('001','語文',90);
INSERT INTO tb_score(userid,subject,score) VALUES ('001','數(shù)學(xué)',92);
INSERT INTO tb_score(userid,subject,score) VALUES ('001','英語',80);
INSERT INTO tb_score(userid,subject,score) VALUES ('002','語文',88);
INSERT INTO tb_score(userid,subject,score) VALUES ('002','數(shù)學(xué)',90);
INSERT INTO tb_score(userid,subject,score) VALUES ('002','英語',75.5);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','語文',70);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','數(shù)學(xué)',85);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','英語',90);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','政治',82);
MySQL給查詢加序號
一種普遍的解決方法是:通過定義用戶變量生成序號
舉例:查詢表中的數(shù)據(jù)并加上序號,對應(yīng)的SQL為:
SELECT id,userid,subject,score, (@i :=@i + 1) AS '序號' FROM tb_score, (SELECT @i := 0) AS itable;
+----+--------+---------+-------+--------+ | id | userid | subject | score | 序號 | +----+--------+---------+-------+--------+ | 1 | 001 | 語文 | 90 | 1 | | 2 | 001 | 數(shù)學(xué) | 92 | 2 | | 3 | 001 | 英語 | 80 | 3 | | 4 | 002 | 語文 | 88 | 4 | | 5 | 002 | 數(shù)學(xué) | 90 | 5 | | 6 | 002 | 英語 | 75.5 | 6 | | 7 | 003 | 語文 | 70 | 7 | | 8 | 003 | 數(shù)學(xué) | 85 | 8 | | 9 | 003 | 英語 | 90 | 9 | | 10 | 003 | 政治 | 82 | 10 | +----+--------+---------+-------+--------+ 10 rows in set (0.00 sec)
SELECT *, (@i :=@i + 1) AS '序號' FROM tb_score;
+----+--------+---------+-------+--------+ | id | userid | subject | score | 序號 | +----+--------+---------+-------+--------+ | 1 | 001 | 語文 | 90 | 11 | | 2 | 001 | 數(shù)學(xué) | 92 | 12 | | 3 | 001 | 英語 | 80 | 13 | | 4 | 002 | 語文 | 88 | 14 | | 5 | 002 | 數(shù)學(xué) | 90 | 15 | | 6 | 002 | 英語 | 75.5 | 16 | | 7 | 003 | 語文 | 70 | 17 | | 8 | 003 | 數(shù)學(xué) | 85 | 18 | | 9 | 003 | 英語 | 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 '序號' FROM tb_score;
+----+--------+---------+-------+--------+ | id | userid | subject | score | 序號 | +----+--------+---------+-------+--------+ | 1 | 001 | 語文 | 90 | 1 | | 2 | 001 | 數(shù)學(xué) | 92 | 2 | | 3 | 001 | 英語 | 80 | 3 | | 4 | 002 | 語文 | 88 | 4 | | 5 | 002 | 數(shù)學(xué) | 90 | 5 | | 6 | 002 | 英語 | 75.5 | 6 | | 7 | 003 | 語文 | 70 | 7 | | 8 | 003 | 數(shù)學(xué) | 85 | 8 | | 9 | 003 | 英語 | 90 | 9 | | 10 | 003 | 政治 | 82 | 10 | +----+--------+---------+-------+--------+ 10 rows in set (0.00 sec)
解釋說明
1、(@i:=@i+1) 也可以寫成 @i:=@i+1,加括號是為了視覺上更清晰。
它代表的意思是:變量 i 加 1 賦值給變量 i,在定義好一個變量后每次查詢都會給這個變量自增,每次執(zhí)行查詢語句獲取結(jié)果后就不需要這個變量自增了。
2、(SELECT @i:=0) AS itable,定義用戶變量 i,設(shè)置初始值為 0,然后將它作為派生表使用,AS 定義了表的別名。
3、SET @i=0 。定義用戶變量 i,賦初值為 0。
相關(guān)知識點
1、MySQL定義用戶變量的方式:
select @變量名 ,上面的SQL語句中,變量的名字是 i。
2、用戶變量賦值:一種是直接用 "=" 號,另一種是用 ":=" 號。
= 和 := 的區(qū)別
使用 set 命令對用戶變量進行賦值時,兩種方式都可以使用,即:SET @變量名=xxx 或 SET @變量名:=xxx
使用 select 語句對用戶變量進行賦值時,只能使用 ":=“ 方式,因為在 select 語句中,”=" 號被看作是比較操作符。
即:SELECT @變量名:=xxx:
①:用戶變量
②:派生表
③:AS設(shè)置別名
到此這篇關(guān)于MySQL自動為查詢數(shù)據(jù)結(jié)果加序號的文章就介紹到這了,更多相關(guān)MySQL給查詢加序號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何修改mysql數(shù)據(jù)庫的max_allowed_packet參數(shù)
本篇文章是對修改mysql數(shù)據(jù)庫的max_allowed_packet參數(shù)進行了詳細的分析介紹,需要的朋友參考下2013-06-06
用VirtualBox構(gòu)建MySQL測試環(huán)境的筆記
這篇文章主要介紹了如何用VirtualBox構(gòu)建MySQL測試環(huán)境,特分享下,方便需要的朋友2013-08-08
解決ERROR?2003?(HY000):?Can‘t?connect?to?MySQL?server?
在Windows系統(tǒng)上使用Django連接Ubuntu虛擬機中的MySQL數(shù)據(jù)庫時,遇到無法連接的問題,排查后發(fā)現(xiàn)是由于MySQL綁定的IP地址改變導(dǎo)致的,下面就來介紹一下問題解決,感興趣的可以了解一下2024-09-09
使用mysqldump如何實現(xiàn)數(shù)據(jù)庫表備份
這篇文章主要介紹了使用mysqldump如何實現(xiàn)數(shù)據(jù)庫表備份方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2013-06-06
macOS Sierra安裝Apache2.4+PHP7.0+MySQL5.7.16
這篇文章主要為大家詳細介紹了macOS Sierra安裝Apache2.4+PHP7.0+MySQL5.7.16的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
MYSQL 的10大經(jīng)典優(yōu)化案例場景實戰(zhàn)
在應(yīng)用開發(fā)的早期,數(shù)據(jù)量少,開發(fā)人員開發(fā)功能時更重視功能上的實現(xiàn),隨著生產(chǎn)數(shù)據(jù)的增長,很多SQL語句開始暴露出性能問題,對生產(chǎn)的影響也越來越大,有時可能這些有問題的SQL就是整個系統(tǒng)性能的瓶頸。本文我們就聊聊MYSQL的優(yōu)化2021-09-09
mysql遇到load data導(dǎo)入文件數(shù)據(jù)出現(xiàn)1290錯誤的解決方案
這篇文章主要介紹了mysql遇到load data導(dǎo)入文件數(shù)據(jù)出現(xiàn)1290錯誤的解決方案,非常的簡單實用,有需要的小伙伴可以參考下2018-07-07

