2012-05-12 14 views
11

W SQL, Select into ... kopiuje wiersze do innej (zapasowej) tabeli. Czy jest to możliwe, jeśli tabela kopii zapasowych ma inną strukturę (lub różne nazwy kolumn)? Jeśli nie, jaki jest najlepszy sposób, aby to osiągnąć?wybierz do tabeli z różnymi nazwami kolumn

Oto, co chcę zrobić: TableA ma kolumny a1,a2,a3. Chcę skopiować niektóre wiersze z tej tabeli do innej tabeli TableB, która ma kolumnę b1,b2,b3,b4. Zawartość a1 iść do b1, a2 do b2 itp

+0

Jaki smak SQL? Jedyne, co mogę znaleźć w "SELECT..INTO" to MS-SQL, a dokumentacja dla niego oznacza, że ​​utworzy on nową tabelę - która powinna zawsze mieć "poprawną" strukturę. – millimoose

+0

Dziękuję za punkt. Pracuję nad sqlite. Nie byłem pewien, czy "Wybierz w ..." działa w sqlite. Próbowałem właśnie teraz, to NIE działa w sqlite. Jednak do tego służy "Wstaw do ..". – zolio

Odpowiedz

33

W nazwy kolumn nie mają znaczenia w ogóle, jak długo typy danych mecz.

Jeśli typy danych w kolumnach nie są zgodne, spróbuj odrzucić wartości odpowiednio. Po prostu spróbuj z małymi stolikami. Pamiętaj, aby wyraźnie podać kolumny docelowe, aby uniknąć nieporozumień. W ten sposób:

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

Więcej szczegółów w instrukcji SQLite here.

+0

nie możemy zrobić tego bez określania nazwy kolumn tak ... INSERT INTO payment_reject_reasons SELECT * FROM ' de_list_reasons' To daje mi błąd ... – mahen3d

+1

@ user1179459: You * * może to zrobić jeśli rodzaje wierszy mecz. Jeśli pojawi się błąd, oczywiście nie. Ta forma jest przydatna tylko w przypadku poleceń ad-hoc i sytuacji specjalnych. Normalnie powinieneś przeliterować odpowiednie kolumny, więc polecenie nie zostanie przerwane, jeśli dodasz kolumnę do jednej z tabel. Dodałem link do instrukcji. –

Powiązane problemy