用其他列的值替换列值

时间:2019-08-23 11:40:52

标签: mysql sql

我有一个表“ companies”,其中包含彼此有联系的公司。我想用相应的ID替换“合作伙伴”列中的公司名称。

ID  Company     Partner

1   Company A   Company B
2   Company B   Company C
3   Company C   Company B

应成为:

ID  Company     Partner

1   Company A   2
2   Company B   3
3   Company C   2

我已经尝试过了,但是收到一个错误,表明子查询返回了多个结果:

UPDATE Companies c1
SET Partner =
(SELECT DISTINCT c2.ID FROM Companies c3 JOIN Companies c2 ON c3.Partner = c2.Company
    WHERE c1.Partner = c3.Partner
)

2 个答案:

答案 0 :(得分:2)

使用JOIN

UPDATE Companies c JOIN
       Companies cp
       ON c.Partner = cp.Company
    SET c.Partner = cp.id;

答案 1 :(得分:0)

您可以在合作伙伴名称和公司名称上尝试使用此“ INNER JOIN”。

 Update p set p.partner = pt.id from partner as p inner join (
 select id, company from partner ) AS PT on p.partner=pt.company
相关问题