C# MySQL-从另一个表更新表

C# MySQL-从另一个表更新表,c#,mysql,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 `gt

我正在编写一个小应用程序(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。

如果您想更新product表中的值,可以按以下操作

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 
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

更新哪张桌子?太好了-再次感谢你。然而,我刚刚发现我需要使用第三个(相关)表。更新查询可以处理这个问题吗?发布问题中的表以及您正在查看的内容。我希望我可以-但我也不允许(即使是查询)。我将快速浏览一下您的原始示例,如果需要,我将发布一些至少能给您一个想法的内容。不过再次感谢-我真的非常感谢您的帮助。查看查询,连接是在4个表之间完成的。这很简单,但是哪个表应该用哪个表中的数据更新?这很不清楚。您提到where子句必须很好地满足,但是对于update,您需要知道要更新哪些字段以及从哪个表中检索这些字段。Hi-
egx\U machine
是需要更新的表,此表中的字段称为
gtr2\u产品系列\u工厂
gtr2\u产品系列
。这些字段需要分别从名为
gtxuk_r2_machine
的表和
product_family
family
的字段中更新。