INSERT INTO othertbl SELECT * tbl

时间:2010-05-07 16:15:44

标签: mysql

现状:

  INSERT INTO othertbl
    SELECT *
    FROM tbl       
  WHERE id = '1'

所以我想将记录从tbl复制到othertbl。两个表都具有自动增量的唯一索引。现在新记录应该有一个新索引,而不是原始记录的索引值,否则复制会导致索引不是唯一错误。

一个解决方案是不使用*但是因为这些表有很多列我真的觉得它变得很难看。

所以,有没有更好的方法来复制记录,这会导致othertbl中的新记录具有新的自动增量索引,而不必写出查询中的所有列并为索引使用NULL值。 / p>

- 希望它有意义....-

4 个答案:

答案 0 :(得分:3)

认为你必须放弃*并指定列fella

答案 1 :(得分:0)

如果您使用的是SQL Server,则可以使用

获取列列表

SELECT column_name+', ' from INFORMATION_SCHEMA.COLUMNS where table_name = 'tbl'

使用上面的结果构建一个insert语句应该很容易。

答案 2 :(得分:0)

您可以使用此查询转储表的非自动增量列列表,然后在insert和select语句中使用它:

SELECT group_concat(column_name) 
from INFORMATION_SCHEMA.COLUMNS 
where table_schema = 'myschema' 
and table_name = 'tbl' 
and extra != 'auto_increment';

答案 3 :(得分:0)

尝试:

INSERT ...
    SELECT *
        FROM tbl
        ON DUPLICATE KEY UPDATE `id`=NULL

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html