SQL将表A中的前n个名称插入表B行,其中n个名称在行中

时间:2017-05-05 15:54:47

标签: sql postgresql

我有一张表A(id integer,name varchar(10))和一张表B(id integer,name1 varchar(10),name2 varchar(10), name3 varchar(10))

我希望将表A的前3个名称插入到表B行中。 例如,如果我有:

table A
id    name
1     ed
2     edd
3     eddd
4     mike

我想要这个:

table B
id    name1    name2    name3
1     ed       edd      eddd

表A的正常order by id没问题。

2 个答案:

答案 0 :(得分:0)

您可以使用条件聚合进行转动并插入:

insert into b (name1, name2, name3)
    select max(case when seqnum = 1 then name end),
           max(case when seqnum = 2 then name end),
           max(case when seqnum = 3 then name end)
    from (select a.*, row_number() over (order by id) as seqnum
          from a
          order by id
          limit 3
         ) a;

这假定id是一个串行列。如果没有,只需选择并插入第一列{.1}}。

答案 1 :(得分:0)

@Test
public void testStack()
{
    try
    {
        String url = "http://5.249.148.180:8280/GLIS_Registration/6";
        String response = restTemplate.execute(url, HttpMethod.GET, new SampleRequestCallBack(), new CustomResponseExtractor());;
        logger.info(response);
    }
    catch (Exception e)
    {
        logger.error("Errore", e);
    }
}