Oracle
 sql >> Database >  >> RDS >> Oracle

Copia riga e modifica un piccolo sottoinsieme di colonne?

NOTA:questa risposta è per SQL Server. L' tag è stato aggiunto alla domanda dopo questa risposta

Presumo che la tua tabella abbia un IDENTITY colonna che è anche la chiave primaria, secondo i principi del buon design. Supponiamo inoltre che non lo faccia hanno colonne calcolate (o timestamp o qualsiasi tipo che richiederà più manipolazioni). Assumiamo infine che tu conosca almeno il nome di questa colonna ID, che è standard, ad es. "id ".

Puoi usare questa sequenza:

SELECT * INTO #tmp FROM tbl WHERE id = @copyfrom;
ALTER TABLE #tmp DROP COLUMN id;
UPDATE #tmp SET
   column1 = ...,
   column2 = ...,
   column3 = ...;  --- the subset of columns you want to change
INSERT tbl SELECT * FROM #tmp;

Dimostrazione di SQL Fiddle