我在here找到了类似的,但不完全一样。
这就是我需要的:
我有两个表a
和b
,具有以下结构:
表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_col2
和b_col3
从表b
中提取b.id = b_id
。例如,我想要a
= 101和b_id
= ZZZ来更新col5
的第一项。请注意,在这种情况下,b_col2 = ABC
和b_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
正如我所说,这不是一个很好的方法,我只是想知道是否有更好的方法?