sql >> Base de Datos >  >> RDS >> Mysql

Registro de clonación de SQL con un índice único

No a menos que quieras entrar en SQL dinámico. Ya que escribiste "limpio", asumiré que no.

Editar: Dado que pidió un ejemplo de SQL dinámico, lo intentaré. No estoy conectado a ninguna base de datos en este momento, por lo que esto está fuera de mi cabeza y casi seguramente necesitará una revisión. Pero espero que capture el espíritu de las cosas:

-- 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)