sql >> Databáze >  >> RDS >> Oracle

Kopírovat řádek a změnit malou podmnožinu sloupců?

POZNÁMKA:Tato odpověď je pro SQL Server. tag byl přidán k otázce za tuto odpověď

Budu předpokládat, že vaše tabulka má IDENTITY sloupec, který je zároveň primárním klíčem podle zásad dobrého návrhu. Předpokládejme také, že ne mít vypočítané sloupce (nebo časová razítka nebo jakýkoli typ, který bude vyžadovat více manipulace). Předpokládejme konečně, že znáte alespoň název tohoto sloupce ID, který je standardní např. "id." ".

."

Můžete použít tuto sekvenci:

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;

Ukázka SQL Fiddle



  1. Co je LEFT JOIN v PostgreSQL

  2. Kam vložím ORDER BY v mém dotazu MYSQL

  3. .NET Core 2 + System.Data.OracleClient. Čínské znaky nefungují

  4. Perl DBI Error Msg:Nelze volat metodu selectcol_arrayref na nedefinované hodnotě