如何在同一个表中为postgres中的不同记录插入相同的数据(或副本)

时间:2014-08-29 21:45:40

标签: sql postgresql

我有一个名为Records的表,其数据如下 -

Section_one | section_two | values       | cDate

name_Fit    | hellp0      | present      | 2014-08-23
name_Fit    | onew        | parcel       | 2014-08-21
name_Fit    | twow        | new thing    | 2014-07-04

现在我正在尝试向列name_Fit_one插入一个名为section_one wrt的新数据,该列应该具有与之对应的类似数据(wrt列section_twovalues)。

我试着编写sql来做到这一点,但我在postgres上收到错误。任何人都可以纠正我,我做错了什么?

Insert into records(section_one,section_two,values) Values ('name_Fit_one', select section_two,values from records where section_one='name_Fit');

预期结果

Section_one | section_two | values       | cDate

name_Fit    | hellp0      | present      | 2014-08-23
name_Fit    | onew        | parcel       | 2014-08-21
name_Fit    | twow        | new thing    | 2014-07-04
name_Fit_one| hellp0      | present      | 2014-08-29
name_Fit_one| onew        | parcel       | 2014-08-29
name_Fit_one| twow        | new thing    | 2014-08-29

需要编写将一条记录的内容复制到另一条记录的单一查询吗?

下面是sql小提琴 -

http://sqlfiddle.com/#!2/9de58/1

2 个答案:

答案 0 :(得分:1)

Insert into records (section_one,section_two, "values") 
select 'name_Fit_one', section_two, "values" 
from records 
where section_one='name_Fit';

请注意,values是保留字,因此需要引用。

答案 1 :(得分:1)

如果你正在使用postgresql,你应该可以使用:

Insert into records
  select 'name_Fit_one', section_two, values, '2014-08-29'
    from records
   where section_one = 'name_Fit';

小提琴: http://sqlfiddle.com/#!15/fbbed/1/0

请注意,我重命名了一些列,因为不清楚上面的示例或您的sqlfiddle是否包含您的实际数据和列名称(它们不同)。

如果您希望将文字“2014-08-29”作为运行插入的日期,则可以将文字“2014-08-29”替换为CURRENT_DATE。