mysql查詢加入序號的方法:1、透過定義使用者變數產生序號,語句如「SELECT id,userid,subject,score, (@i :=@i 1) AS 'xuhao'FROM tb_score, (SELECT @i := 0) AS itable;」;2、透過「SET @i=0;SELECT id,userid,subject,score...」語句實作加序號。
#本教學操作環境:Windows10系統、MySQL5.7版本、Dell G3電腦。
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影片教學》
以上是mysql查詢怎麼加入序號的詳細內容。更多資訊請關注PHP中文網其他相關文章!