如何使用来自另一个表的值更新表?

时间:2015-08-31 20:40:22

标签: mysql

我在here找到了类似的,但不完全一样。

这就是我需要的:

我有两个表ab,具有以下结构:

a

id  b_id    b_col2 b_col3 col5
1   NULL    NULL   NULL   NULL
2   XXX     XXX    XXX    XXX

b

id    col2 col3
101   ABC  DEF
102   XXX  XXX

更新:目标是使用三个给定的输入(id, b_id, col5),应该相应地更新一行表a。具体而言,b_col2b_col3从表b中提取b.id = b_id。例如,我想要a = 101和b_id = ZZZ来更新col5的第一项。请注意,在这种情况下,b_col2 = ABCb_col3 = DEF,更新的行应为:

id  b_id    b_col2 b_col3 col5
1   101     ABC    DEF    ZZZ

我知道至少有一种我不喜欢的不那么有效的方式:

update a set 
    a.b_id = some-id, 
    a.b_col2 = (SELECT col2 FROM b WHERE b.id = some-id),
    a.b_col3 = (SELECT col3 FROM b WHERE b.id = some-id),
    ...
    where a.`id` = xxx

正如我所说,这不是一个很好的方法,我只是想知道是否有更好的方法?

0 个答案:

没有答案