I found similar ones at here, but not exactly the same.
Here is what I need:
I have two tables a and b, with the following structures:
Table a:
id b_id b_col2 b_col3 col5
1 NULL NULL NULL NULL
2 XXX XXX XXX XXX
Table b:
id col2 col3
101 ABC DEF
102 XXX XXX
UPDATE: The goal is that with three given inputs (id, b_id, col5), one row of table a should be updated accordingly. Specifically, b_col2 and b_col3 are extracted from table b with that b.id = b_id. For example, I want to update the first item of a with b_id=101 and col5 = ZZZ. Notice that b_col2 = ABC and b_col3 = DEF in this case, the updated row should be:
id b_id b_col2 b_col3 col5
1 101 ABC DEF ZZZ
I know there is at least a not-so-effective way which I don't like:
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
As I said, this is not a very good method, and I am just wondering if there is any better method?