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

Mysql 如何使用来自另一个表的值更新表?,mysql,Mysql,我在家里找到了相似的,但不完全相同 以下是我需要的: 我有两个表a和表b,结构如下: 表a: 表b: 更新:目标是使用三个给定的输入id、b_id、col5,表a的一行应该相应地更新。具体来说,b_col2和b_col3是从表b中提取的,b.id=b_id。例如,我想用b_id=101和col5=ZZZ更新a的第一项。请注意,b_col2=ABC和b_col3=DEF在本例中,更新的行应为: id b_id b_col2 b_col3 col5 1 101 ABC DE

我在家里找到了相似的,但不完全相同

以下是我需要的:

我有两个表a和表b,结构如下:

表a:

表b:

更新:目标是使用三个给定的输入id、b_id、col5,表a的一行应该相应地更新。具体来说,b_col2和b_col3是从表b中提取的,b.id=b_id。例如,我想用b_id=101和col5=ZZZ更新a的第一项。请注意,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

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

没有办法做到这一点,除非两个表之间有一些共享标识符。否则,MySQL无法知道A中的哪些行与B中的哪些行。B_id是否总是从等效A_id记录中偏移100?那么您如何知道它们之间的关系?是按输入的顺序吗?您的问题意味着您希望用等效行自动填充数据库。请您更新您的问题的全部内容,以便我们能够理解并帮助您:@Zwander已经更新了这个问题。希望现在更清楚了:
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