MySQL - 从另一个表更新表

时间:2014-05-23 12:57:51

标签: c# mysql

我正在编写一个小应用程序(c#/ WPF / MySQL)。我想做的一件事是更新表格中的一些产品描述。

以下是我认为可能作为起点的查询的略微修改版本:

SELECT
    `egx_machine`.`contact_id` AS `contact_id`,
    `egx_machine`.`gtr2_product_family` AS `gtr2_product_family`,
    `egx_machine`.`gtr2_product_family_factory` AS `gtr2_product_family_factory`,
    `egx_machine`.`gtr2_product_family_model` AS `gtr2_product_family_model`,
    `egx_machine`.`gtr2_product_family_size` AS `gtr2_product_family_size`,
    `egx_machine_extra`.`contact_name` AS `contact_name`,
    `gtxuk_r2_machine`.`machine_desc` AS `machine_desc`,
    `gtxuk_r2_machine`.`product_family` AS `product_family`,
    `gtxuk_r2_machine`.`factory` AS `factory`,
    `gtxuk_r2_machine`.`model` AS `model`,
    `gtxuk_r2_machine`.`size` AS `size`
FROM (((`egx_machine`
    JOIN `egx_machine_extra`
        ON ((`egx_machine`.`contact_id` = `egx_machine_extra`.`contact_id`)))
    JOIN `gtxuk_machine`
        ON ((`egx_machine_extra`.`contact_value` = `gtxuk_machine`.`machine_id`)))
    JOIN `gtxuk_r2_machine`
        ON ((CONVERT(`gtxuk_machine`.`machine_desc` USING utf8) = `gtxuk_r2_machine`.`machine_desc`)))
WHERE (`egx_machine_extra`.`contact_name` = 'mac_type')

但不知何故,我需要将其转换为更新查询,其中:

`egx_machine`.`gtr2_product_family` = `gtxuk_r2_machine`.`product_family`
and
`egx_machine`.`gtr2_product_family_factory = `gtxuk_r2_machine`.`factory`

我知道这有点长啰嗦 - 但我开始时头发很长,现在看起来像kojak。

1 个答案:

答案 0 :(得分:0)

如果要更新产品表中的值,可以按

进行操作
update 
products p
join products_new_data pn on pn.product_name = p.product_name
set 
p.product_name_new = pn.product_name_new ,
p.product_source = pn.product_source ;

为了做到反向你可以做

update 
products_new_data pn
join products p on p.product_name = pn.product_name
set 
pn.product_name_new  = p.product_name_new,
pn.product_source = p.product_source ;

<强>更新

从评论中我想这就是你所看到的,但是如果没有架构和一些数据就很难编写查询,但我认为如果我没有被误解,你应该非常接近你所看到的问题

update egx_machine em
JOIN egx_machine_extra emx on emx.contact_id = em.contact_id
JOIN gtxuk_machine gm on emx.contact_value = gm.machine_id
JOIN gtxuk_r2_machine g2m on CONVERT(gm.machine_desc USING utf8) = g2m.machine_desc
set 
em.gtr2_product_family = g2m.product_family ,
em.gtr2_product_family_factory = g2m.factory