Maison  >  Article  >  base de données  >  Comment ajouter un numéro de série dans une requête MySQL

Comment ajouter un numéro de série dans une requête MySQL

藏色散人
藏色散人original
2023-02-14 11:04:4111476parcourir

Comment ajouter des numéros de série à une requête MySQL : 1. Générez des numéros de série en définissant des variables utilisateur, des instructions telles que "SELECT id,userid,subject,score, (@i :=@i + 1) AS 'xuhao'FROM tb_score ,(SELECT @ i := 0) AS itable;"; 2. Ajoutez le numéro de série via l'instruction "SET @i=0;SELECT id,userid,subject,score...".

Comment ajouter un numéro de série dans une requête MySQL

L'environnement d'exploitation de ce tutoriel : système Windows 10, MySQL version 5.7, ordinateur Dell G3.

Comment ajouter un numéro de série dans une requête MySQL ?

MySQL ajoute des numéros de série aux requêtes

table de données

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 ajoute des numéros de série aux requêtes

Une solution courante consiste à générer des numéros de série en définissant des variables utilisateur

Exemple : table de requête Les données est ajouté avec un numéro de série, et le SQL correspondant est :

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)

ou

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)

Explication

1 (@i:=@i+1) peut également. être écrit comme @i:=@i+1, des parenthèses sont ajoutées pour plus de clarté visuelle. (@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

Ce que cela signifie est : ajoutez 1 à la variable i et affectez-la à la variable i. Après avoir défini une variable, celle-ci sera donnée chaque fois. à chaque fois que vous interrogez La variable est incrémentée d'elle-même. Cette variable n'a pas besoin d'être incrémentée à chaque fois que l'instruction de requête est exécutée pour obtenir les résultats.

2. (SELECT @i:=0) AS itable, définissez la variable utilisateur i, définissez la valeur initiale sur 0, puis set it Utilisé comme table dérivée, AS définit un alias pour la table.

3. SET @i=0 . Définissez la variable utilisateur i et attribuez la valeur initiale à 0.

Points de connaissances associés 1. La façon dont MySQL définit les variables utilisateur :
sélectionnez @nom de la variable, dans l'instruction SQL ci-dessus, le nom de la variable C'est i. 2. Affectation des variables utilisateur : l'une consiste à utiliser directement le symbole "=", et l'autre consiste à utiliser le symbole ":=". La différence entre = et :=

Lors de l'utilisation de la commande set pour attribuer des valeurs aux variables utilisateur, les deux méthodes peuvent être utilisées, à savoir : SET @variable name =xxx ou SET @variable name:=xxx

Lorsque vous utilisez l'instruction select pour attribuer des valeurs aux variables utilisateur, vous ne pouvez utiliser que le " :=", car dans l'instruction select, le symbole ”=" est considéré comme un opérateur de comparaison.
C'est-à-dire : SELECT @variable name:=xxx : 🎜🎜① : Variable utilisateur 🎜🎜② : Table dérivée 🎜🎜③ : Alias ​​de réglage AS 🎜🎜🎜🎜🎜🎜🎜🎜🎜 Étude recommandée : "🎜Tutoriel vidéo MySQL🎜"🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn