mysql如何从另一个表更新表数据?表a中的1行Map到表b中的2行

nimxete2  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(357)

我有表a,3列

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中的每一行Map到表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
m0rkklqb

m0rkklqb1#

这是一个简单的步骤,也许你的问题会得到解决。

create table tab_b(id int,
                   A_id int,
                   `key` varchar(20),
                   `value` varchar(20)); 
insert into tab_b values
(1,1,'text1','test_value1'),
(2,1,'text2','test_value2');

create table tab_a(id int,text1 varchar(20),text2 varchar(20));

insert into tab_a(id,text1,text2)
select id,max(text1) text1,max(text2) text2
from(
select a_id as id,
       case when `key`='text1' then `value` end text1,
       case when `key`='text2' then `value` end text2
from tab_b) a;

演示

9gm1akwq

9gm1akwq2#

加入 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`;

相关问题