2012-05-12 16 views
11

In SQL, Select into ... copia le righe in una tabella (di backup) diversa. È possibile se la tabella di backup ha una struttura diversa (o nomi di colonne diversi)? In caso contrario, qual è il modo migliore per raggiungere questo obiettivo?selezionare in una tabella con nomi di colonne diversi

Ecco cosa voglio fare: TableA ha colonne a1,a2,a3. Voglio copiare alcune righe da questa tabella ad un'altra tabella TableB che ha la colonna b1,b2,b3,b4. Contenuto delle a1 per andare in b1, a2 a b2 ecc

+0

Quale sapore di SQL? L'unico che riesco a trovare con 'SELECT..INTO' è MS-SQL, e la documentazione implica che creerà una nuova tabella - che dovrebbe sempre avere la struttura" corretta ". – millimoose

+0

Grazie per il punto. Sto lavorando su sqlite. Non ero sicuro se "Select into ..." funzionasse in sqlite. Ho provato solo ora, NON funziona in sqlite. Tuttavia, "Inserisci in .." funziona per questo. – zolio

risposta

33

I nomi delle colonne non contano affatto, finché il tipi di dati partita.

Se i tipi di dati delle colonne non corrispondono, provare a trasmettere i valori di conseguenza. Basta provare con piccoli tavoli fittizi. Assicurati di elencare le colonne target in modo esplicito per evitare confusione. Come questo:

INSERT INTO TableB (b1, b2, b3) 
SELECT a1, a2, a3 
FROM TableA 
WHERE <some condition>; 

Maggiori dettagli nel manuale di SQLite here.

+0

gergo facciamo questo senza specificare i nomi delle colonne come questo ... INSERT INTO payment_reject_reasons SELECT * FROM 'de_list_reasons' questo mi dà un errore di ... – mahen3d

+1

@ user1179459: È possibile * * farlo se i tipi di riga incontro. Se ricevi un errore, ovviamente non lo fanno. Anche questo modulo è utile solo per comandi ad-hoc e situazioni speciali. Normalmente si dovrebbero specificare le colonne coinvolte, quindi il comando non si interromperà se si aggiunge una colonna a una delle tabelle. Ho aggiunto un collegamento al manuale. –

Problemi correlati