2008-09-04 37 views
9

İki tablo içeren bir veritabanım var (Table1 ve Table2). Her ikisi de nvarchar olan bir ortak sütun [ColumnA]'a sahiptir.SQL: İki tablodan sütun seç

Her iki tablodan bu sütunu nasıl seçebilirim ve sonuç kümemde tek bir sütun olarak nasıl döndürürüm?

Yani böyle bir şey arıyorum:

ColumnA in Table1: 
a 
b 
c 

ColumnA in Table2: 
d 
e 
f 

Result set should be: 
a 
b 
c 
d 
e 
f 
Ayrıca

cevap

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

, sen ASLA örtüşme, bunun yerine TÜM BİRLİĞİ yerine UNION kullanabilirsiniz olacak Table1 ve Table2 içeriğini biliyorsanız . Bu şekilde biraz kaynak kaydeder.

- Kevin Fairchild

+0

Sipariş verirken alt sorgu gereksinimini ortadan kaldırmak için ilk sorguda SİPARİŞ BY 1 yapabilirsiniz. – user12861

+0

İyi yakalama. Teşekkürler. –

+1

AFAIK, Özellikle SQL Server, açık ORDER BY olmadan bile seçilen sütun tarafından otomatik olarak sıraya girer. Ama bu sadece UNION vakaları için geçerlidir ve UNION TÜM olanlar için geçerli değildir. VE ORDER BY, siparişin tasarımın amaçlandığı yerlerde okunabilirliği artırır. –

1

UNION operatörünü kullanın: seçmek

SELECT ColumnA FROM Table1 
UNION 
SELECT ColumnA FROM Table2 
0

Sen bir birlik kullanabilirsiniz:

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 

Yoksa sorunuzu yanlış anlama ben?

Düzenleme: Göründüm.

+0

Sorunun ilk okuması seninkiyle aynıydı, JesDaw. Özgün poster, "a, b, c", vb. "ColumnA" da * değerleri olduğunu açıklamak birazcık daha açıktı, özellikle de hem bir sütun hem de bir değer için harfi kullandığınız için. Sadece nitpicking, sanırım. –

0

Ben öyle inanıyorum: Eğer dups olsun ya da olmasın, eğer

SELECT columna FROM table1 UNION SELECT columnb FROM table2; 
3

ilgileniyor musunuz?

BİRLİĞİ TÜM dups

Oracle (en azından) BİRLİĞİ var ise
0

ve UNION filtreleyecektir.END_ITEMEND_UNORDERED_LIST TÜM çünkü BİRLİĞİ BİRLİĞİ daha yavaş olacaktır, UNION ALL çiftleri, olsa bile her iki kümelerinden tüm sonuçları döndürür UNION her iki kümeden farklı sonuçlar getirecektir.

1

sendika cevaptır neredeyse doğru, örtüşen değerlerine bağlı olarak:

SELECT distinct ColumnA FROM Table1 
UNION 
SELECT distinct ColumnA FROM Table2 

'd' Tablo-1'de göründüğü veya 'c' Table2 göründüyse onlarla birden satırlarda yer alacaktır.

İlgili konular