выберите в таблицу с разными именами столбцов

В SQL Select into ... копирует строки в другую (резервную) таблицу. Возможно ли это, если резервная таблица имеет другую структуру (или разные имена столбцов)? Если нет, то как лучше всего этого добиться?

Вот что я хочу сделать: TableA имеет столбцы a1,a2,a3. Я хочу скопировать некоторые строки из этой таблицы в другую таблицу TableB со столбцом b1,b2,b3,b4. Содержимое a1 для перехода в b1, a2 в b2 и т. д.


person zolio    schedule 12.05.2012    source источник
comment
Какая разновидность SQL? Единственное, что я могу найти с SELECT..INTO, это MS-SQL, и в документации к нему подразумевается, что он создаст новую таблицу, которая всегда должна иметь правильную структуру.   -  person millimoose    schedule 12.05.2012
comment
Спасибо за точку. Я работаю над sqlite. Я не был уверен, работает ли Select into... в sqlite. Я только что попробовал, он НЕ работает в sqlite. Однако для этого работает Insert into.. .   -  person zolio    schedule 12.05.2012


Ответы (1)


Имена столбцов не имеют значения, если типы данных совпадают (или могут быть приведены в назначении).

Если типы данных столбцов не совпадают, попробуйте привести соответствующие значения. Просто попробуйте с небольшими фиктивными таблицами. Не забудьте явно указать целевые столбцы, чтобы избежать путаницы. Как это:

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

Дополнительные сведения см. в руководстве по SQLite здесь.

person Erwin Brandstetter    schedule 12.05.2012
comment
мы не можем сделать это без указания имен столбцов, как это ... INSERT INTO payment_reject_reasons SELECT * FROM de_list_reasons это дает мне ошибку ... - person mahen3d; 21.09.2012
comment
@ user1179459: Вы можете сделать это, если типы строк совпадают. Если вы получаете ошибку, они, очевидно, не делают. Также эта форма хороша только для специальных команд и особых ситуаций. Обычно вы должны указать задействованные столбцы, чтобы команда не сломалась, если вы добавите столбец в одну из таблиц. Добавил ссылку в мануал. - person Erwin Brandstetter; 21.09.2012