具有多个表连接的 SQL 更新
使用多个连接表中的数据更新表字段是一个频繁的 SQL 操作。 本指南演示了如何有效地执行此任务。
场景:
想象一个包含三个表的数据库:item_master
(im)、group_master
(gm) 和 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>
更新要求:
目标是使用从连接表派生的值更新 mf_item_number
中的 item_master
字段。
SQL 解决方案:
以下 SQL 语句完成此更新:
<code class="language-sql">UPDATE im SET mf_item_number = gm.SKU -- Or other appropriate field from joined tables 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>
说明:
UPDATE im
:指定要更新的表(item_master
别名为 im
)。SET mf_item_number = gm.SKU
:将新值分配给 mf_item_number
。 新值源自 SKU
表 (group_master
) 中的 gm
列。 您可以将 gm.SKU
替换为连接表中的任何其他相关字段。FROM item_master im JOIN group_master gm ON im.sku = gm.sku JOIN Manufacturer_Master mm ON gm.ManufacturerID = mm.ManufacturerID
:根据匹配的 sku
和 ManufacturerID
值定义三个表之间的联接。WHERE im.mf_item_number LIKE 'STA%' AND gm.manufacturerID = 34
:过滤要更新的行,确保仅那些符合指定条件的行受到影响。执行此查询会根据连接条件和 WHERE 子句过滤器,使用 mf_item_number
中相应的 item_master
值更新 SKU
表中的 group_master
字段。 请记住调整 SET
子句和 WHERE
子句以满足您的特定更新要求。
以上是如何使用 SQL 中多个连接表的数据更新表字段?的详细内容。更多信息请关注PHP中文网其他相关文章!