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 latable_2
. La table mentionnée dans la clauseUPDATE
est mise à jour, et les données de la table non mentionnées après la clauseUPDATE
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 clauseUPDATE
. - 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.