我有一个表有一个id(自动编号)字段和50个其他字段。该表是标准化的,这些是50种材料属性等。
我想将此表中的记录复制到同一个表中 - 只有autoincrement id会有所不同。 我现在使用的查询是
INSERT INTO tableName (field1,field2,....field50)
SELECT field1,field2,....field50 from tableName
WHERE autoid=1234;
请注意,我必须输入所有50个字段名称,两次!有没有办法缩短这个查询,所以我不必输入所有这些?
感谢。
答案 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列,那么您是否应该重新考虑数据库设计?