mysql查詢怎麼加入序號

藏色散人
發布: 2023-02-14 11:04:41
原創
11315 人瀏覽過

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!