Utilisation de UPDATE JOIN dans MySQL

Preet Sanghavi 28 mars 2022
Utilisation de UPDATE JOIN dans MySQL

Ce tutoriel présentera comment utiliser l’instruction UPDATE JOIN dans une base de données MySQL.

Nous utilisons généralement des JOIN pour parcourir les lignes d’une table particulière qui ont ou non des lignes similaires dans une autre table. Nous pouvons utiliser la clause JOIN à côté de l’instruction UPDATE pour implémenter plusieurs mises à jour de table.

La syntaxe de base de MySQL UPDATE JOIN peut être illustrée comme suit.

UPDATE Table_1, Table_2,
[INNER JOIN] Table_1 ON Table_1.Column_1 = Table_2. Column_1
SET Table_1.Column_2 = Table_2.Column_2, 
    Table_2.Column_3 = expression
WHERE condition

La syntaxe ci-dessus fonctionne comme suit pour une table particulière dans MySQL.

  • Nous commençons notre travail en spécifiant la table principale appelée table_1 et la table que nous voulons joindre à la table principale comme la table_2. La table mentionnée dans la clause UPDATE est mise à jour, et les données de la table non mentionnées après la clause UPDATE ne seront pas modifiées.
  • Une fois que nous avons fait cela, nous devons mentionner le type de jointure que nous souhaitons utiliser. Dans la syntaxe ci-dessus, nous avons utilisé la jointure INNER. Cette jointure doit venir immédiatement après la clause UPDATE.
  • Après avoir fourni des valeurs aux colonnes que nous souhaitons mettre à jour, nous mentionnons une clause WHERE pour spécifier une condition particulière pour la mise à jour.

Il existe une autre façon d’utiliser cette méthode qui peut être illustrée comme suit.

UPDATE Table_1, Table_2
SET Table_1.column_2 = Table_2.column_2,
      Table_2.column_3 = expr
WHERE Table_1.column_1 = Table_2.column_1 AND condition

Avant de commencer, créons deux tables avec lesquelles travailler. Nous appellerons ces tables student_details et marks. Ces tables peuvent être créées avec le code suivant.

CREATE TABLE marks (
    performance INT(11) NOT NULL,
    percentage FLOAT NOT NULL,
    PRIMARY KEY (performance)
);

CREATE TABLE student_details (
    stu_id INT(11) NOT NULL AUTO_INCREMENT,
    stu_name VARCHAR(255) NOT NULL,
    performance INT(11) DEFAULT NULL,
    total FLOAT DEFAULT NULL,
    PRIMARY KEY (emp_id),
    CONSTRAINT fk_performance FOREIGN KEY (performance)
        REFERENCES marks (performance)
);

INSERT INTO marks(performance,percentage)
VALUES(1,0),
      (2,0.01),
      (3,0.03),
      (4,0.05),
      (5,0.08);

INSERT INTO student_details(stu_name,performance,total)      
VALUES('Preet Sanghavi', 1, 50000),
      ('Joe Sand', 3, 65000),
      ('Su Greens', 4, 75000),
      ('Gray Dellop', 5, 125000),
      ('Neon Jonty', 3, 85000),
      ('Peter Foe', 2, 45000),
      ('Little Wayne', 3, 55000);

Pour visualiser la table student_details, nous utilisons le code suivant.

SELECT * FROM student_details;

Le code ci-dessus donnerait la sortie suivante.

stu_id   stu_name 		stu_performance total
1		Preet Sanghavi		1			50000
2		Joe Sand			3			65000
3		Su Greens			4			75000
4		Gray Dellop			5			125000
5		Neon Jonty			3			85000
6		Peter Foe			2			45000
7		Little Wayne		3			55000

De même, nous pouvons visualiser la table marks.

SELECT * FROM marks;

Le code ci-dessus donnerait la sortie suivante.

performance    percentage 
1				0
2				0.01
3				0.03
4				0.05
5				0.08

Comme nous pouvons le voir dans les blocs de code ci-dessus, la valeur en pourcentage se trouve dans le tableau marks, et nous devons utiliser UPDATE JOIN avec INNER JOIN comme jointure principale pour ajuster le total de chaque étudiant dans le table student_details en fonction des valeurs de pourcentage et performance dans la table marks.

Remarque : Il est important de noter que le pont entre les deux tables, student_details et marks, est la colonne performance.

Voyons maintenant l’instruction UPDATE JOIN en action.

Utilisation de l’instruction UPDATE JOIN dans MySQL

Nous pouvons effectuer l’opération de mise à jour comme décrit ci-dessus en utilisant la requête suivante.

UPDATE student_details
        INNER JOIN
    marks ON student_details.performance = marks.performance 
SET 
    total = total + total * percentage;

Ici, la table student_details est la table principale où la valeur de total doit être mise à jour.

Remarque : Étant donné que nous nous débarrassons de la clause WHERE dans l’instruction UPDATE dans la requête mentionnée ci-dessus, tous les enregistrements de la table student_details sont modifiés en fonction de la condition SET.

La sortie de la requête mentionnée ci-dessus donnerait les résultats suivants.

stu_id   stu_name 		stu_performance total
1		Preet Sanghavi		1			50000
2		Joe Sand			3			66950
3		Su Greens			4			78750
4		Gray Dellop			5			135000
5		Neon Jonty			3			87550
6		Peter Foe			2			45450
7		Little Wayne		3			56650

Comme nous pouvons le voir dans le bloc de code ci-dessus, le total de chaque élève est mis à jour en fonction de sa performance dans la table marks.

Ainsi, avec l’aide de la technique mentionnée ci-dessus, nous pouvons utiliser efficacement Update Join dans MySQL.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Article connexe - MySQL Join