【问题标题】:MySQL - Query to update all rows with foreign reference values?MySQL - 查询以使用外部参考值更新所有行?
【发布时间】:2018-08-29 14:20:17
【问题描述】:

最初我有三个带有链接的表;

表C->表B->表A

CREATE TABLE TableA (
    id int(15) PRIMARY KEY, 
    name char(25) not null
);

CREATE TABLE TableB (
    id int(15), 
    A_id int(15) not null, 
    Foreign Key(A_id) references TableA(id),
);

CREATE TABLE TableC (
    id int(15), 
    B_id int(15) not null, 
    Foreign Key(B_id) references TableB(id),
);

我想直接在TableC上添加TableA的外键后删除TableB;

表C -> 表A

如果我有数百个 TableC 行,如何迁移这些现有数据? 我尝试了以下查询,但由于超过 1 行而失败。 .

update TableC set A_id = ( select ta.id from TableC tc, TableB tb, TableA ta where tc.B_id=tb.id and tb.A_id=ta.id );

你能帮忙吗?

【问题讨论】:

  • 今日提示:切换到现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。
  • 样本数据和期望的结果会有所帮助。如果给定的A 记录有多个值怎么办?

标签: mysql sql


【解决方案1】:

尝试使用直接的子查询。

UPDATE tablec
       SET a_id = (SELECT b.a_id
                          FROM tableb b
                          WHERE b.id = tablec.b_id);

【讨论】:

    猜你喜欢
    • 2014-04-09
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多