代码之家  ›  专栏  ›  技术社区  ›  superUntitled

高级MySQL查询:使用其他表中的信息更新表

  •  34
  • superUntitled  · 技术社区  · 16 年前

    我想用另一个表中的数据更新MySQL中的一个表。

    我有两张桌子“人”和“生意”。人员表通过一个名为“business_id”的列链接到业务表。

    必要的表结构,主键是星型的(表:列): 人员:*业务编号,*排序顺序,电子邮件 业务:*业务\ ID,电子邮件

    我想用“人员”表中的电子邮件更新“业务表电子邮件”列,如下所示(我知道我这里缺少某些内容):

    UPDATE business b SET email = (SELECT email  from People p where p.business_id = b.business_id AND sort_order = '1') WHERE b.email = ''; 
    

    这有道理吗?有可能吗?

    3 回复  |  直到 7 年前
        1
  •  91
  •   ChssPly76    16 年前
    UPDATE business b, people p
       SET b.email = p.email
     WHERE b.business_id = p.business_id
       AND p.sort_order = '1'
       AND b.email = ''
    
        2
  •  13
  •   hobodave    16 年前

    注意,如果排序顺序是int,则不要使用“1”-使用1:

    UPDATE business b
    JOIN People p
    ON p.business_id = b.business_id
    AND p.sort_order = '1'
    SET b.email = p.email
    WHERE b.email = '';
    
        3
  •  0
  •   king zecole    7 年前

    试试这个,它对我很管用。

    Update table a, table b
    Set a.importantField = b.importantField,
    a.importantField2 = b.importantField2
    where a.matchedfield = b.matchedfield;