Heim >Datenbank >MySQL-Tutorial >So fügen Sie einer MySQL-Abfrage eine Seriennummer hinzu

So fügen Sie einer MySQL-Abfrage eine Seriennummer hinzu

藏色散人
藏色散人Original
2023-02-14 11:04:4111544Durchsuche

So fügen Sie Seriennummern zur MySQL-Abfrage hinzu: 1. Generieren Sie Seriennummern, indem Sie Benutzervariablen und Anweisungen wie „SELECT id,userid,subject,score, (@i :=@i + 1) AS ‚xuhao‘FROM tb_score“ definieren ,(SELECT @ i := 0) AS itable;"; 2. Fügen Sie die Seriennummer durch die Anweisung „SET @i=0;SELECT id,userid,subject,score...“ hinzu.

So fügen Sie einer MySQL-Abfrage eine Seriennummer hinzu

Die Betriebsumgebung dieses Tutorials: Windows 10-System, MySQL Version 5.7, Dell G3-Computer.

Wie füge ich eine Seriennummer in eine MySQL-Abfrage ein?

MySQL fügt Seriennummern zu Abfragen hinzu.

Datentabelle.

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 fügt Seriennummern zu Abfragen hinzu wird mit einer Seriennummer hinzugefügt und die entsprechende SQL lautet:

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;

oder

+----+--------+---------+-------+--------+
| 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;

Erläuterung

1. (@i:=@i+1) kann auch muss als @i:=@i+1 geschrieben werden, zur besseren Verdeutlichung werden Klammern hinzugefügt. Was es bedeutet: Fügen Sie 1 zur Variablen i hinzu und weisen Sie sie der Variablen i zu. Nach der Definition einer Variablen wird diese alle angegeben Wenn Sie eine Abfrage durchführen, wird die Variable von selbst erhöht. Diese Variable muss nicht jedes Mal erhöht werden, wenn die Abfrageanweisung ausgeführt wird, um die Ergebnisse zu erhalten.

2. (SELECT @i:=0) AS itable, definieren Sie die Benutzervariable i, setzen Sie den Anfangswert auf 0 und dann set it Wird als abgeleitete Tabelle verwendet und definiert AS einen Alias ​​für die Tabelle. (@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

3. SET @i=0 . Definieren Sie die Benutzervariable i und weisen Sie 0 den Anfangswert zu.

Verwandte Wissenspunkte

1. So definiert MySQL Benutzervariablen:
select @variable name, in der obigen SQL-Anweisung den Namen der Variable Es ist i.

2. Zuweisung von Benutzervariablen: Eine besteht darin, das Symbol "=" direkt zu verwenden, und die andere darin, das Symbol ":=" zu verwenden. Der Unterschied zwischen = und :=Bei Verwendung des Set-Befehls zum Zuweisen von Werten zu Benutzervariablen können beide Methoden verwendet werden, nämlich: SET @variable name =xxx oder SET @variable name:=xxxWenn Sie die Select-Anweisung verwenden, um Benutzervariablen Werte zuzuweisen, können Sie nur den verwenden. :="-Methode, da in der SELECT-Anweisung das Symbol ”=" als Vergleichsoperator betrachtet wird.
Das heißt: SELECT @variable name:=xxx:

①: Benutzervariable

②: Abgeleitete Tabelle 🎜🎜③: AS-Einstellungsalias 🎜🎜🎜🎜🎜🎜🎜🎜🎜 Empfohlene Studie: „🎜MySQL-Video-Tutorial🎜“🎜

Das obige ist der detaillierte Inhalt vonSo fügen Sie einer MySQL-Abfrage eine Seriennummer hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn