mysql - 将列值替换为其他列中的值

标签 mysql sql

我有一个表“公司”,其中包含彼此有关系的公司。我想将“合作伙伴”栏中的公司名称替换​​为相应的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
)

最佳答案

使用JOIN:

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

关于mysql - 将列值替换为其他列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57625633/

相关文章:

mysql选择离今天最近的日期

mysql - NuGet 依赖项和多个 DLL 版本

python - 使用 SQLAlchemy 从 MySQL 获取最后插入的值

sql - 为什么在 JPA Hibernate 中更新查询;所有属性都在 SQL 中得到更新

mysql - 防止 mysql 查询给出多行相同的 id

sql - 避免在 SQL-Server 中自动创建 XML 标签

mysql - 与 "Create TABLE as"类似的功能,但要添加更多信息

php - 根据部署数据计算给定月份的工作天数 (Mysql/PHP)

mysql - 如何在执行 SQL 转储时替换某些列的值

MySQL 仅当行中先前的值发生更改时才插入新行