有没有办法简化详细的SQL INSERT INTO(..)查询?

时间:2010-05-11 01:20:43

标签: sql mysql insert

我有一个表有一个id(自动编号)字段和50个其他字段。该表是标准化的,这些是50种材料属性等。

我想将此表中的记录复制到同一个表中 - 只有autoincrement id会有所不同。 我现在使用的查询是

INSERT INTO tableName (field1,field2,....field50)
SELECT field1,field2,....field50 from tableName
WHERE autoid=1234;

请注意,我必须输入所有50个字段名称,两次!有没有办法缩短这个查询,所以我不必输入所有这些?

感谢。

3 个答案:

答案 0 :(得分:2)

你可以说:

INSERT INTO tableName
SELECT * from tableName WHERE autoid=1234;

答案 1 :(得分:2)

看一下上面的答案,主要问题是,如果你insert into <tableName> select * from <tableName>

,你将会受到主要密钥的侵犯

以下是我对可能的解决方案的猜测:

SELECT *
INTO #tempTable
FROM TableName
WHERE autoid = 1234

这会得到你的价值观。那么你需要摆脱ID

ALTER TABLE #tempTable
DROP COLUMN autoid

然后只需将其插回主表

即可
INSERT INTO tableName
SELECT * FROM #tempTable

我不是SqlServer的枪,主要是使用sybase,所以可能会有一些语法问题。请随时纠正我,我会改变我的答案

答案 2 :(得分:1)

INSERT INTO tableName
SELECT * from tableName 
WHERE autoid=1234;

如果表中有50列,那么您是否应该重新考虑数据库设计?