sql >> Databasteknik >  >> RDS >> Oracle

Kopiera rad och ändra en liten delmängd av kolumner?

OBS:Det här svaret är för SQL Server. taggen lades till i frågan efter detta svar

Jag kommer att anta att ditt bord har en IDENTITY kolumn som också är den primära nyckeln, enligt principerna för god design. Låt oss också anta att det inte gör det har beräknade kolumner (eller tidsstämplar eller någon typ som kräver mer manipulation). Låt oss slutligen anta att du åtminstone känner till namnet på denna ID-kolumn, som är standard, t.ex. "id ".

Du kan använda denna sekvens:

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;

SQL Fiddle Demo



  1. Ska jag designa en tabell med en primärnyckel av varchar eller int?

  2. Blanda DDL- och DML-satser i ett enda skript

  3. MySQL:Använder DATETIME som primärnyckel

  4. Varför fungerar inte sqlalchemys standardkolumnvärde