我有一个包含两个表的数据库(Table1
和Table2
)。他们都有一个共同的列[ColumnA]
这是一个nvarchar
。SQL:从两个表中选择像列一样
如何从两个表中选择此列并将其作为单个列返回到结果集中?
所以我在寻找类似:
ColumnA in Table1:
a
b
c
ColumnA in Table2:
d
e
f
Result set should be:
a
b
c
d
e
f
我有一个包含两个表的数据库(Table1
和Table2
)。他们都有一个共同的列[ColumnA]
这是一个nvarchar
。SQL:从两个表中选择像列一样
如何从两个表中选择此列并将其作为单个列返回到结果集中?
所以我在寻找类似:
ColumnA in Table1:
a
b
c
ColumnA in Table2:
d
e
f
Result set should be:
a
b
c
d
e
f
SELECT ColumnA FROM Table1 UNION Select ColumnB FROM Table2 ORDER BY 1
另外,如果你知道Table 1和表2中的内容将NEVER重叠,你可以使用UNION ALL代替UNION代替。以这种方式节省一点资源。
- 凯文飞兆半导体
使用UNION操作:
SELECT ColumnA FROM Table1
UNION
SELECT ColumnA FROM Table2
您可以使用一个联盟选择:
Select columnA from table1 union select columnA from table2
SELECT Table1.*, Table2.d, Table2.e, Table2.f
FROM Table1 JOIN Table2 ON Table1.a = Table2.a
还是我误解你的问题?
编辑:看来我做到了。
我相信这是:
SELECT columna FROM table1 UNION SELECT columnb FROM table2;
你关心,如果你得到的DUP或不?
UNION将比UNION慢ALL因为UNION将筛选出的DUP
在Oracle(至少)有UNION和UNION ALL,UNION ALL将返回所有结果从两组即使有重复的,其中因为UNION将从两组中返回不同的结果。
工会答案是几乎正确的,这取决于重叠值:
SELECT distinct ColumnA FROM Table1
UNION
SELECT distinct ColumnA FROM Table2
如果“d”出现在表1或“C”出现在表2,你会跟他们多行。
您可以在您的第一个查询中执行ORDER BY 1,以避免在订购时需要子查询。 – user12861 2008-11-07 21:31:31
好的。谢谢。 – 2008-11-14 22:18:18