MySQL如何从另一个表更新表数据?表A中的1行映射到表B中的2行

时间:2018-07-15 06:29:38

标签: mysql sql

我有A表,三列

id text1 text2

我有表B,有4列

id A_id key value

表B中的数据如下

id  A_id   key     value 
1    1     text1   test_value1 
2    1     text2   test_value2

表A中的每一行都映射到表B中的2行。表A上的列text1和text2现在为空。我正在尝试将数据从表B复制到表A。

我该如何一步一步做到?谢谢。 现在,我有以下声明,但必须指定

AND B.key = "text1"

,如何同时更新text1和text2列?

UPDATE A
    INNER JOIN B
        ON A.id = B.A_id
        AND B.key = "text1"
SET A.text1 = B.value

2 个答案:

答案 0 :(得分:2)

两次加入B,每个“键”一次。

UPDATE `A`
       INNER JOIN `B` `B1`
                  ON `B1`.`A_id` = `A`.`id`
                     AND `B1`.`key` = 'text1'
       INNER JOIN `B` `B2`
                  ON `B2`.`A_id` = `A`.`id`
                     AND `B2`.`key` = 'text2'
       SET `A`.`text1` = `B1`.`value`,
           `A`.`text2` = `B2`.`value`;

答案 1 :(得分:0)

这是简单的步骤,可能会解决您的问题。

Dataset.withWaterMark

DEMO