Maison >base de données >tutoriel mysql >Comment mettre à jour un champ de table à l'aide de jointures SQL ?
Requête SQL UPDATE utilisant JOIN
Supposons que vous deviez mettre à jour un champ dans une table en fonction des valeurs extraites d'une jointure de plusieurs tables. Par exemple, vous pouvez avoir une table item_master (im) qui contient un champ mf_item_number qui doit être mis à jour en fonction des données de group_master (gm) et Manufacturer_Master (mm).
<code class="language-sql">SELECT im.itemid, im.sku AS iSku, gm.SKU AS GSKU, mm.ManufacturerId AS ManuId, mm.ManufacturerName, im.mf_item_number, mm.ManufacturerID FROM item_master im, group_master gm, Manufacturer_Master mm WHERE im.mf_item_number LIKE 'STA%' AND im.sku = gm.sku AND gm.ManufacturerID = mm.ManufacturerID AND gm.manufacturerID = 34;</code>
Pour mettre à jour le champ mf_item_number dans item_master, vous pouvez utiliser l'instruction SQL suivante :
<code class="language-sql">UPDATE im SET mf_item_number = gm.SKU FROM item_master im JOIN group_master gm ON im.sku = gm.sku JOIN Manufacturer_Master mm ON gm.ManufacturerID = mm.ManufacturerID WHERE im.mf_item_number LIKE 'STA%' AND gm.manufacturerID = 34;</code>
Cette requête met à jour le champ mf_item_number dans item_master en fonction de la valeur SKU dans group_master, qui elle-même est filtrée par une condition impliquant Manufacturer_Master.
Voici un exemple de requête de mise à jour générique utilisant des jointures :
<code class="language-sql">UPDATE A SET foo = B.bar FROM TableA A JOIN TableB B ON A.col1 = B.colx WHERE ...;</code>
Dans cet exemple, la clause UPDATE fait référence à l'alias de table A dans la clause FROM pour mettre à jour le champ foo en fonction de la valeur B.bar récupérée de la jointure entre TableA et TableB.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!