2008-09-04 12 views
9

私は2つのテーブル(Table1Table2)を持つデータベースを持っています。どちらも共通の列[ColumnA]nvarchar)です。SQL:2つのテーブルから同様の列を選択

どのようにしてこのテーブルを両方のテーブルから選択し、結果セットの1列として返すことができますか?

は、だから私のようなものを探しています:

ColumnA in Table1: 
a 
b 
c 

ColumnA in Table2: 
d 
e 
f 

Result set should be: 
a 
b 
c 
d 
e 
f 
また

答えて

16
SELECT ColumnA FROM Table1 UNION Select ColumnB FROM Table2 ORDER BY 1 

、あなたはNEVER重複は、あなたの代わりにALL UNIONの代わりにUNIONを使用することができます表1と表2の内容を知っていれば。そのようなリソースを少し節約します。

- ケビン・フェアチャイルド

+0

注文時にサブクエリが不要になるように、最初のクエリでORDER BY 1を実行できます。 – user12861

+0

良いキャッチ。ありがとう。 –

+1

AFAIK、特にSQL Serverは、明示的なORDER BYがなくても選択された列によって自動的に並べ替えられます。しかし、これはUNIONの場合にのみ当てはまり、UNIONの場合には当てはまりません。また、ORDER BYは、デザインによって注文が意図されている場合の読みやすさを向上させます。 –

1

UNIONオペレータ使用:あなたが選択する組合を使用することができます

SELECT ColumnA FROM Table1 
UNION 
SELECT ColumnA FROM Table2 
0

を:

Select columnA from table1 union select columnA from table2 
0
SELECT Table1.*, Table2.d, Table2.e, Table2.f 
FROM Table1 JOIN Table2 ON Table1.a = Table2.a 

または私はあなたの質問を誤解していますか?

編集:それは私がしたようです。

+0

質問の私の最初の読書は、あなたと同じでした、JesDaw。オリジナルのポスターでは、ColumnAの "値"は、 "a、b、c"などであることを説明するのが少しはっきりしています。ちょうどニックピッキング、私は思います。 –

0

私はそれがだと信じて:あなたはDUPを取得するかどう

SELECT columna FROM table1 UNION SELECT columnb FROM table2; 
3

は、あなたが気にしますか?

UNIONがUNIONよりも遅くなりUNIONは、UNIONとUNION ALLがある(少なくとも)は、OracleでのDUP

0

を除外するすべてのため、UNION ALLはここで、重複がある場合でも、両方のセットからすべての結果を返しますUNIONは両方のセットから別個の結果を返します。

1

組合の答えがあるほとんど正しい、重複した値に応じて:

SELECT distinct ColumnA FROM Table1 
UNION 
SELECT distinct ColumnA FROM Table2 

「d」は表1に登場か「C」は表2に登場した場合、あなたが彼らとの複数の行を持っているでしょう。

関連する問題