Requète SQL update et select imbriqué pour MySql

Vous souhaitez 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.

Ce petit article est un aide mémoire personnel mais je ne doute pas qu’il servira à d’autres.Limite rencontré : MySql ne reconnait pas la syntaxe suivante pour les requêtes imbriquées
update tab1 set tab1.chp1 = (select chpA from tab2 where tab2.chpB = tab1.chp2)

Solution pour MySql : Il faut utiliser une jointure entre les deux tables
update tab1 join tab2 on tab1.chpJoin = tab2.chpJoin set tab1.chpDestination = tab2.chpSource

Pour aller plus loin : exemple de requête pour MySql avec where et plusieurs champs à mettre à jour dont une concaténation de chaîne de caractères (string)
update tab1 join tab2 on tab1.chpJoin = tab2.chpJoin set tab1.chpDestination1 = tab2.chpSource1, tab1.chpDestination2 = concat(tab2.chpSource1, '...') where tab2.chpFiltre = 'cequejeveux'