объединить два стола в один большой стол - PullRequest
8 голосов
/ 29 ноября 2008

У меня есть две таблицы с одинаковыми столбцами, и мне нужно скопировать строки одной таблицы в строки другой таблицы, чтобы создать одну большую таблицу со всеми значениями из обеих таблиц. Сейчас я делаю этот запрос, чтобы вернуть то же самое:

SELECT col1, col2, col3 from Table1
union
SELECT col1, col2, col3 from Table2

Однако, это кажется ужасно неэффективным, и в моей системе это очень медленно (возвращает 1210189 записей).

Ответы [ 6 ]

11 голосов
/ 29 ноября 2008

Начните с объединения всех:

select col1, col2, col3 from Table1
union all
select col1, col2, col3 from Table2

Ваш запрос пытается дедупликации, что значительно замедлит его.

11 голосов
/ 29 ноября 2008

Пусть это сработает просто:

SELECT col1, col2, col3 
INTO Table1
FROM Table2 
2 голосов
/ 29 ноября 2008

Вы можете использовать это для заполнения второй таблицы:

Insert into table2 select * from table1;

Или, если вы хотите быть более конкретным:

Insert into table2(col1, col2, col3) select col1, col2, col3 from table1;

(Примечание. Для некоторых СУБД может потребоваться заключить в скобки предложение SELECT.)

1 голос
/ 29 ноября 2008

Я думаю, что лучший вариант - создать представление на сервере sql, это оптимизирует производительность запроса:

SELECT col1, col2, col3 from Table1
union all
SELECT col1, col2, col3 from Table2

(Как говорили другие пользователи: «объединение» используется для выбора различных значений из двух таблиц где «объединение всех» используется для выбора всех значений, включая дубликаты из таблиц.)

В то же время я ограничил бы количество строк, которые я получаю из базы данных, если я пишу их для веба и если это вызывает у меня проблемы, с новыми функциями Sql Server 2005 row_number () , с этим я бы страница результатов.

0 голосов
/ 21 июля 2018
select * into newtable from table1
union all
select * from table2

работал хорошо. Рекомендации, обе таблицы имеют одинаковые имена столбцов:)

0 голосов
/ 04 апреля 2012
select * into new table(your new table name) 
from table1.col1,table1.col2,table2.col1;

здесь столбцы могут быть вашими необходимыми столбцами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...