有没有一种干净的方法来克隆SQL中具有索引(自动增量)的记录。我想克隆除索引外的所有字段。我目前必须枚举每个字段,并在插入选择中使用它,而我宁愿不明确列出所有字段,因为它们可能随时间而变化。
除非您想进入动态SQL,否则不可以。既然您写的是“干净”,我就不做。
编辑: 由于他要求一个动态的SQL示例,我将对此进行介绍。我目前尚未连接到任何数据库,因此这是我的首要任务,几乎可以肯定需要修订。但希望它能抓住事物的精神:
-- Get list of columns in table SELECT INTO #t EXEC sp_columns @table_name = N'TargetTable' -- Create a comma-delimited string excluding the identity column DECLARE @cols varchar(MAX) SELECT @cols = COALESCE(@cols+',' ,'') + COLUMN_NAME FROM #t WHERE COLUMN_NAME <> 'id' -- Construct dynamic SQL statement DECLARE @sql varchar(MAX) SET @sql = 'INSERT INTO TargetTable (' + @cols + ') ' + 'SELECT ' + @cols + ' FROM TargetTable WHERE SomeCondition' PRINT @sql -- for debugging EXEC(@sql)