[MySQL] Requête imbriquée

Les requêtes imbriquées vous permettent par exemple de mettre à jour les informations d’un champs d’une table en utilisant les informations provenant d’une autre table.

MySql utilise une syntaxe qui n’est pas forcément la première qui nous vient à l’esprit lorsque l’on est habitué à d’autre serveur SQL.

 

La méthode standard de conception d'une requête imbriquée est la syntaxe suivante :

UPDATE table1 AS t1 SET t1.column1 = (SELECT columnA FROM table2 AS t2 WHERE t2.columnB = t1.column2)

Mais, mais mais ... MySql ne reconnait pas la cette syntaxe.

 

La solution est donc d'utiliser les jointures comme ceci :

UPDATE table1 AS t1 JOIN table2 AS t2 ON t2.columnB = t1.column2  SET t1.column1 = t2.columnA

 

Exemple de requête un peu plus complexe pour MySQL avec la clause WHERE, plusieurs champs à mettre à jour et une concaténation de chaîne de caractères  :

UPDATE t1 JOIN t2 ON t1.colJoin = t2.colJoin SET t1.colDest1 = t2.colSrc1, t1.colDest2 = concat(t2.colSrc2, '...') WHERE t2.colFiltre = 'ma recherche'