Sök…


Kopiera data från en tabell till en annan

Den här koden väljer data ur en tabell och visar dem i frågaverktyget (vanligtvis SSMS)

SELECT Column1, Column2, Column3 FROM MySourceTable;

Denna kod sätter in dessa data i en tabell:

INSERT INTO MyTargetTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM MySourceTable;

Kopiera data till en tabell och skapa tabellen där du är

Den här koden väljer data ur en tabell:

SELECT Column1, Column2, Column3 FROM MySourceTable;

Den här koden skapar en ny tabell som heter MyNewTable och lägger in den i den

SELECT Column1, Column2, Column3 
INTO MyNewTable
FROM MySourceTable;

Flytta data till en tabell (med antagande av en unik nyckelmetod)

För att flytta data sätter du först in dem i målet och tar sedan bort vad du har lagt in från källtabellen. Detta är inte en normal SQL-operation men det kan vara upplysande

Vad satte du in? Normalt i databaser måste du ha en eller flera kolumner som du kan använda för att identifiera rader på ett unikt sätt så vi antar det och använder det.

Detta uttalande väljer några rader

SELECT Key1, Key2, Column3, Column4 FROM MyTable;

Först sätter vi in dessa i vår måltabell:

INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;

Förutsatt att poster i båda tabellerna är unikaKey1 , Key2 , kan vi använda det för att hitta och ta bort data från källtabellen

DELETE MyTable
WHERE EXISTS (
    SELECT * FROM TargetTable 
    WHERE TargetTable.Key1 = SourceTable.Key1
    AND TargetTable.Key2 = SourceTable.Key2
);

Detta fungerar bara korrekt om Key1 , Key2 är unika i båda tabellerna

Slutligen vill vi inte att jobbet är halvt gjort. Om vi avslutar detta i en transaktion kommer antingen alla data att flyttas, eller så kommer ingenting att hända. Detta säkerställer att vi inte sätter in uppgifterna i då kan vi inte ta bort informationen från källan.

BEGIN TRAN;

INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;


DELETE MyTable
WHERE EXISTS (
    SELECT * FROM TargetTable 
    WHERE TargetTable.Key1 = SourceTable.Key1
    AND TargetTable.Key2 = SourceTable.Key2
);

COMMIT TRAN;


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow