2010-08-17 6 views
3

У меня есть две таблицы с похожими столбцами. Я просто хотел бы выбрать обе таблицы, одну за другой, так что, если у меня есть строки «x» в таблице1 и «y» на таблице2, я бы получил строки «x + y».Как объединить две похожие таблицы по результату

+3

Если есть дубликаты, вы хотите, чтобы они были удалены или оставлены на месте? Это важно, потому что «UNION» удаляет дубликаты - «UNION ALL» не делает и быстрее для него. –

ответ

6

Для этого вы должны использовать UNION [ALL]. Таблицы не должны иметь одинаковые имена столбцов, но вы должны выбрать одинаковое число столбцов из каждого и соответствующие столбцы должны быть совместимыми типами данных

SELECT col1,col2,col3 FROM table1 
UNION ALL 
SELECT col1,col2,col3 FROM table2 

UNION ALL является preferrable в UNION, где есть выбор, поскольку он может избежать операции сортировки, чтобы избавиться от дубликатов.

+0

его таблицы были четко обозначены table1 и table2, а x и y использовались в качестве подсчета строк. я нахожу этот ответ неприемлемым ...;) –

+0

@nathan - Я исправлю это, чтобы порадовать вас! Изменить: Готово. –

+1

Я очень рад. +1 –

2
select col1,col2,col3 from table1 
union 
select col1,col2,col3 from table2 
+0

OP хочет все строки, поэтому 'UNION ALL'. «UNION» удалит дубликаты –

+0

@raj. –

4

Чтобы добавить к ним, что вы говорите, вы можете добавить заказ. Зависит от версии SQL, которую вы используете.

SELECT Col1, Col2, Col3 
FROM Table1 
UNION 
SELECT Col1, Col2, Col3 
FROM Table2 
ORDER BY Col1 

Обратите внимание, что ORDER и GROUP BY должны уходить после последней таблицы в UNION.

Смежные вопросы