Maison >base de données >tutoriel mysql >Comment mettre à jour un champ de table à l'aide de jointures SQL ?

Comment mettre à jour un champ de table à l'aide de jointures SQL ?

DDD
DDDoriginal
2025-01-22 14:05:11810parcourir

How to Update a Table Field Using SQL Joins?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn