【问题标题】:Inserting data into multiple columns of same table from one column of another table将数据从另一表的一列插入同一表的多列
【发布时间】:2017-09-10 20:53:33
【问题描述】:

我有一个表WCR (l,j,W,C,R),其中包含以下条目。这里,l,j 是主键。

我必须将来自WCR 的列C 的数据插入到另一个表C(l,C1,C2) 中,其中l 是主键。 C 表如下-

对于每个lj=1 将插入C1j=2 将插入C2。 但我无法概括查询。

我尝试过类似的语句 -

INSERT INTO C 
SELECT 1, 
C FROM WCR WHERE j=1, 
C FROM WCR WHERE j=2;

Insert 语句中的子查询如 -

 INSERT INTO C 
 VALUES (1, 
         SELECT C FROM WCR WHERE j=1, 
         SELECT C FROM WCR WHERE j=2);

但它们都不适用于 Vertica,因为它不支持 INSERT 语句中的子查询,并且第一个无效。如何有效地将值插入C

【问题讨论】:

    标签: mysql sql database insert vertica


    【解决方案1】:

    一种方法使用join

    Insert into C(l, c1, c2)
        select wcr1.l, wcr1.c, wcr2.c
        from wcr wcr1 join
             wcr wcr2
             on wcr1.l = wcr2.l and wcr1.j = 1 and wcr2.j = 2;
    

    另一种方法使用条件聚合:

    insert into c(l, c1, c2)
         select l, max(case when j = 1 then c end) as c1, max(case when j = 2 then c end)
         from wcr
         group by l;
    

    【讨论】:

    • 谢谢。我尝试了第一种说法。我知道这是一个错字,在第二行中,它应该是“select wcr1.l”而不是“select wcr1.j”。第二个效果很好。
    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多