MySQL-查询以外部引用值更新所有行?

时间:2018-08-29 14:20:18

标签: mysql sql

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

TableC-> TableB-> TableA

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;

TableC-> TableA

如果我有大量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 );

能请你帮忙吗?

1 个答案:

答案 0 :(得分:1)

尝试使用直接子查询。

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