我想从一个表中根据id取一行记录复制到同一张表中,但有主键唯一约束,insert into aaa (select * from aaa where id = 1);  ,后面有很多乱78糟的字段,我想让复制的那条记录变一下id插入到表中,请问大侠们有没有什么好办法啊?先谢谢大家了

解决方案 »

  1.   

    insert into aaa (select t1.id ,t2.* from (select max(id)+1 id from aaa )t1,(select 其他字段 from aaa where id = 1) t2 );
      

  2.   

    自己通过数据字典表去拼凑下  然后把执行的SQL语句出来就可以了
      

  3.   

    例如:
    SELECT 'INSERT INTO T SELECT '||A.T FROM DUAL就类似这样  自己去拼凑下  然后把查出的结果执行下就OK了
      

  4.   

    这个语句可以帮你找出这个表的所有字段,按照column_id进行排序,并用逗号分割。
    SELECT     MAX (SUBSTR ((SYS_CONNECT_BY_PATH (NAME, ',')), 2)) cola
          FROM (SELECT ID, NAME, ROWNUM rnum,
                       ROW_NUMBER () OVER (PARTITION BY ID ORDER BY ID) rn1
                  FROM (SELECT   1 ID, column_name NAME
                            FROM dba_tab_columns
                           WHERE table_name = 'YOURTABLENAME'
                        ORDER BY column_id))
    START WITH rn1 = 1
    CONNECT BY rnum - 1 = PRIOR rnum
      GROUP BY ID;下面你总知道怎么做了吧。
    给分给分。
      

  5.   

    用工具啊,toad,自动给你生成你的句子