您好,登錄后才能下訂單哦!
這篇文章主要介紹“MySQL怎么實現自動為查詢數據結果加序號”,在日常操作中,相信很多人在MySQL怎么實現自動為查詢數據結果加序號問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MySQL怎么實現自動為查詢數據結果加序號”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
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','數學',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','數學',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','數學',85); INSERT INTO tb_score(userid,subject,score) VALUES ('003','英語',90); INSERT INTO tb_score(userid,subject,score) VALUES ('003','政治',82);
一種普遍的解決方法是:通過定義用戶變量生成序號
舉例:查詢表中的數據并加上序號,對應的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 | 數學 | 92 | 2 | | 3 | 001 | 英語 | 80 | 3 | | 4 | 002 | 語文 | 88 | 4 | | 5 | 002 | 數學 | 90 | 5 | | 6 | 002 | 英語 | 75.5 | 6 | | 7 | 003 | 語文 | 70 | 7 | | 8 | 003 | 數學 | 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 | 數學 | 92 | 12 | | 3 | 001 | 英語 | 80 | 13 | | 4 | 002 | 語文 | 88 | 14 | | 5 | 002 | 數學 | 90 | 15 | | 6 | 002 | 英語 | 75.5 | 16 | | 7 | 003 | 語文 | 70 | 17 | | 8 | 003 | 數學 | 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 | 數學 | 92 | 2 | | 3 | 001 | 英語 | 80 | 3 | | 4 | 002 | 語文 | 88 | 4 | | 5 | 002 | 數學 | 90 | 5 | | 6 | 002 | 英語 | 75.5 | 6 | | 7 | 003 | 語文 | 70 | 7 | | 8 | 003 | 數學 | 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
,在定義好一個變量后每次查詢都會給這個變量自增,每次執行查詢語句獲取結果后就不需要這個變量自增了。
2、(SELECT @i:=0) AS itable
,定義用戶變量 i
,設置初始值為 0
,然后將它作為派生表使用,AS 定義了表的別名。
3、SET @i=0
。定義用戶變量 i
,賦初值為 0
。
1、MySQL定義用戶變量的方式:
select @變量名
,上面的SQL語句中,變量的名字是 i
。
2、用戶變量賦值:一種是直接用 "="
號,另一種是用 ":="
號。
=
和 :=
的區別
使用 set 命令對用戶變量進行賦值時,兩種方式都可以使用,即:SET @變量名=xxx
或 SET @變量名:=xxx
使用 select 語句對用戶變量進行賦值時,只能使用 ":=“
方式,因為在 select 語句中,”="
號被看作是比較操作符。
即:SELECT @變量名:=xxx
:
①:用戶變量
②:派生表
③:AS設置別名
到此,關于“MySQL怎么實現自動為查詢數據結果加序號”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。