Postgres:创建现有行的副本,更改一个值?

时间:2016-02-05 10:50:14

标签: postgresql

我在Postgres 9.4工作。我有一张看起来像这样的表:

     Column      │         Type         │                             Modifiers
─────────────────┼──────────────────────┼───────────────────────
 id              │ integer              │ not null default 
 total_list_size │ integer              │ not null
 date            │ date                 │ not null
 pct_id          │ character varying(3) │

我想将所有值都放在date='2015-09-01',并使用日期2015-10-01创建相同的新条目。

我怎样才能做到最好?

我可以使用SELECT * from mytable WHERE date='2015-09-01'获取要复制的值列表,但我不确定在此之后要做什么。

1 个答案:

答案 0 :(得分:2)

如果列idserial,那么

INSERT INTO mytable (total_list_size, date, pct_id)
SELECT total_list_size, '2015-10-01', pct_id
FROM mytable 
WHERE date = '2015-09-01';

否则,如果您希望重复ids

INSERT INTO mytable (id, total_list_size, date, pct_id)
SELECT id, total_list_size, '2015-10-01', pct_id
FROM mytable 
WHERE date = '2015-09-01';