首頁 >資料庫 >mysql教程 >mysql查詢怎麼加入序號

mysql查詢怎麼加入序號

藏色散人
藏色散人原創
2023-02-14 11:04:4111544瀏覽

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...」語句實作加序號。

mysql查詢怎麼加入序號

#本教學操作環境: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);

MySQL給查詢加序號

一種普遍的解決方法是:透過定義使用者變數來產生序號

範例:查詢表中的資料並加上序號,對應的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,加括號是為了視覺上更清晰。

它代表的意思是:變數i1 賦值給變數i,在定義好一個變數後每次查詢都會給這個變數自增,每次執行查詢語句取得結果後就不需要這個變數自增了。

2、(SELECT @i:=0) AS itable,定義使用者變數i,設定初始值為0,然後將它作為派生表使用,AS 定義了表的別名。

3、SET @i=0 。定義使用者變數 i,賦初值為 0

相關知識點

1、MySQL定義使用者變數的方式:
select @變數名稱 ,在上面的SQL語句中,變數的名字是i

2、使用者變數賦值:一種是直接用 "=" 號,另一種是用 ":=" 號。

=:= 的區別

使用set 指令對使用者變數進行賦值時,兩種方式都可以使用,也就是:SET @變數名稱=xxxSET @變數名稱:=xxx

使用使用select 語句對使用者變數進行賦值時,只能使用":= 「 方式,因為在select 語句中,」=" 號被視為比較運算子。
即:SELECT @變數名稱:=xxx

①:使用者變數

②:衍生表格

③:AS設定別名

推薦學習:《MySQL影片教學

以上是mysql查詢怎麼加入序號的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn