我现在像要把要一个表A里的数据汇总起来然后插入到另一个表B里,多条插入。
表A的结构的汇总结果就一个字段:name,表B就两个字段。id和name;
想实现的效果如下:
name            id   name
红              1     红
蓝       -->    2     蓝
黄              3     黄我希望id是自动生成的。
 可以做到吗?

解决方案 »

  1.   

    新建一个临时表,有自增字段,再插入到工作表中
    or
    select name,case name when '红' then 1
    when '蓝' then 2
    when '黄' then 3
    end as is
    from ttor将NAME及对应ID存入临时 表,与工作表连接
      

  2.   

    有具体的代码吗?
     我对postgre不是很熟
      

  3.   

    try:
    alter table b alter id SERIAL NOT NULL;;
    insert into b(name) select name from a
      

  4.   

    or
    create table b(name varchar(10),id SERIAL NOT NULL);
    insert into b(name) select name from a
      

  5.   

    orCREATE SEQUENCE person_id_seq;
       CREATE TABLE b ( 
          id   INT4 NOT NULL DEFAULT nextval(’person_id_seq’),
          name varchar(10)
       );
    insert into b(name) select name from a
      

  6.   

    csdn=# select * from a;
     name
    ------
     红
     蓝
     黄
    (3 rows)
    csdn=# create table b(id serial ,name varchar(10));
    NOTICE:  CREATE TABLE will create implicit sequence "b_id_seq" for serial column
     "b.id"
    CREATE TABLE
    csdn=# insert into b(name) select name from a;
    INSERT 0 3
    csdn=# select * from b;
     id | name
    ----+------
      1 | 红
      2 | 蓝
      3 | 黄
    (3 rows)
    csdn=#