在PostgreSQL中插入语句

时间:2018-10-11 02:51:50

标签: sql postgresql

我有一张有8条记录的表。

我在17年12月有4条记录,在1月18日中有4条记录(仅更改yearmon)

我也希望在2月18日这一个月也有相同的记录。所有列的值都应该相同,只有yearmon必须更改为Feb-18。

如果我的记录少于5条,我可以写一条插入语句。还有其他方法可以编写查询以获取所需的输出吗?

income   score_1  score_2  rank  yearmon
     800      77      90      10   Dec-17
     900      72      44      99   Dec-17
     700      62      44      06   Dec-17
     600      55      23      06   Dec-17
     800      77      90      10   Jan-18
     900      72      44      99   Jan-18
     700      62      44      06   Jan-18
     600      55      23      06   Jan-18

输出类似于

   income   score_1  score_2  rank  yearmon
     800      77      90      10    Dec-17
     900      72      44      99    Dec-17
     700      62      44      06    Dec-17
     600      55      23      06    Dec-17
     800      77      90      10    Jan-18
     900      72      44      99    Jan-18
     700      62      44      06    Jan-18
     600      55      23      06    Jan-18
     800      77      90      10    Feb-18
     900      72      44      99    Feb-18
     700      62      44      06    Feb-18
     600      55      23      06    Feb-18

2 个答案:

答案 0 :(得分:3)

这回答了原始问题。

最简单的方法是union all

select income, score_1, score_2, rank, yearmon
from t
union all
select income, score_1, score_2, rank, 'Feb-2018'
from t;

如果要更改表,请insert

insert into t (income, score_1, score_2, rank, yearmon)
    select income, score_1, score_2, rank, 'Feb-2018'
    from t;

答案 1 :(得分:1)

首先插入收入,得分_1,得分_2,RANK组合的所有唯一值。 然后将yearmon更新为2月18日

INSERT INTO T
       SELECT DISTINCT income, score_1, score_2, RANK
         FROM T;

    UPDATE T
       SET yearmon = 'Feb-18'
     WHERE yearmon IS NULL;