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_1et la table que nous voulons joindre à la table principale comme latable_2. La table mentionnée dans la clauseUPDATEest mise à jour, et les données de la table non mentionnées après la clauseUPDATEne 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
WHEREpour 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.
