Ricerca…


Copia i dati da una tabella all'altra

Questo codice seleziona i dati da una tabella e li visualizza nello strumento di query (in genere SSMS)

SELECT Column1, Column2, Column3 FROM MySourceTable;

Questo codice inserisce tali dati in una tabella:

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

Copia i dati in una tabella, creando al volo quella tabella

Questo codice seleziona i dati da una tabella:

SELECT Column1, Column2, Column3 FROM MySourceTable;

Questo codice crea una nuova tabella denominata MyNewTable e inserisce tali dati in essa

SELECT Column1, Column2, Column3 
INTO MyNewTable
FROM MySourceTable;

Spostare i dati in una tabella (assumendo il metodo delle chiavi univoche)

Per spostare i dati, devi prima inserirli nella destinazione, quindi eliminare quello che hai inserito dalla tabella di origine. Questa non è una normale operazione SQL ma potrebbe essere illuminante

Cosa hai inserito? Normalmente nei database è necessario disporre di una o più colonne che è possibile utilizzare per identificare in modo univoco le righe, in modo da poterle assumere e utilizzarle.

Questa affermazione seleziona alcune righe

SELECT Key1, Key2, Column3, Column4 FROM MyTable;

Per prima cosa inseriamo questi nella nostra tabella di destinazione:

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

Ora assumendo record in entrambe le tabelle sono unici su Key1 , Key2 , possiamo usarlo per trovare e cancellare i dati dalla tabella di origine

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

Ciò funziona correttamente solo se Key1 , Key2 sono unici in entrambe le tabelle

Infine, non vogliamo che il lavoro sia finito a metà. Se lo completiamo in una transazione, tutti i dati verranno spostati o non accadrà nulla. Ciò garantisce che non inseriamo i dati in quel momento e che non siamo in grado di eliminare i dati dalla fonte.

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow