我建立了这个SELECT查询,它返回正确的结果:

SELECT CONCAT_WS(' ', n.contact_first_name, n.contact_last_name), n.contact_id, s.contact_id
  FROM contact n
  JOIN demographics s ON s.contact_id = n.contact_id


我得到一个表,该表具有两个串联的名称和匹配的contact_id。我的目的是将所有contact_first_namecontact_last_name写入列名demographics下的demographics_name表中。但是,我试图将SELECT语句“转换”为UPDATE,但遇到了重复的列名问题。这是我尝试构建的查询:

UPDATE demographics d
    INNER JOIN (SELECT n.contact_first_name, n.contact_last_name, n.contact_id, s.contact_id
          FROM contact n
          JOIN demographics s ON s.contact_id = n.contact_id
    ) c
    ON c.contact_id = d.contact_id
    SET d.demographics_name = CONCAT_WS(' ', c.contact_first_name, c.contact_last_name)


我无法发现自己​​犯的错误,而且我真的可以借助新的批判眼神指出我在这里所缺少的东西。

最佳答案

这样行得通吗?

UPDATE demographics d
    INNER JOIN contact c
    ON c.contact_id = d.contact_id
    SET d.demographics_name = CONCAT_WS(' ', c.contact_first_name, c.contact_last_name)

07-24 09:32