现状:
INSERT INTO othertbl
SELECT *
FROM tbl
WHERE id = '1'
所以我想将记录从tbl复制到othertbl。两个表都具有自动增量的唯一索引。现在新记录应该有一个新索引,而不是原始记录的索引值,否则复制会导致索引不是唯一错误。
一个解决方案是不使用*但是因为这些表有很多列我真的觉得它变得很难看。
所以,有没有更好的方法来复制记录,这会导致othertbl中的新记录具有新的自动增量索引,而不必写出查询中的所有列并为索引使用NULL值。 / p>
- 希望它有意义....-
答案 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