2008-09-04 16 views
9

我有一个包含两个表的数据库(Table1Table2)。他们都有一个共同的列[ColumnA]这是一个nvarcharSQL:从两个表中选择像列一样

如何从两个表中选择此列并将其作为单个列返回到结果集中?

所以我在寻找类似:

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 

另外,如果你知道Table 1和表2中的内容将NEVER重叠,你可以使用UNION ALL代替UNION代替。以这种方式节省一点资源。

- 凯文飞兆半导体

+0

您可以在您的第一个查询中执行ORDER BY 1,以避免在订购时需要子查询。 – user12861 2008-11-07 21:31:31

+0

好的。谢谢。 – 2008-11-14 22:18:18

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

我相信这是:

SELECT columna FROM table1 UNION SELECT columnb FROM table2; 
3

你关心,如果你得到的DUP或不?

UNION将比UNION慢ALL因为UNION将筛选出的DUP

0

在Oracle(至少)有UNION和UNION ALL,UNION ALL将返回所有结果从两组即使有重复的,其中因为UNION将从两组中返回不同的结果。

1

工会答案是几乎正确的,这取决于重叠值:

SELECT distinct ColumnA FROM Table1 
UNION 
SELECT distinct ColumnA FROM Table2 

如果“d”出现在表1或“C”出现在表2,你会跟他们多行。