10

我有一个包含两个表(Table1Table2)的数据库。它们都有一个共同的列[ColumnA],即nvarchar.

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

所以我正在寻找类似的东西:

ColumnA in Table1:
a
b
c

ColumnA in Table2:
d
e
f

Result set should be:
a
b
c
d
e
f
4

8 回答 8

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

此外,如果您知道 Table1 和 Table2 的内容永远不会重叠,则可以使用 UNION ALL 代替 UNION。这样可以节省一点资源。

——凯文·费尔柴尔德

于 2008-09-04T17:04:15.327 回答
3

你在乎你有没有被骗吗?

UNION 会比 UNION ALL 慢,因为 UNION 会过滤掉重复数据

于 2008-09-04T17:07:56.753 回答
1

使用UNION运算符:

SELECT ColumnA FROM Table1
UNION
SELECT ColumnA FROM Table2
于 2008-09-04T17:04:57.960 回答
1

联合答案几乎是正确的,具体取决于重叠值:

SELECT distinct ColumnA FROM Table1
UNION
SELECT distinct ColumnA FROM Table2

如果 'd' 出现在 Table1 中或 'c' 出现在 Table2 中,您将拥有多行。

于 2008-09-04T17:10:26.403 回答
0

您可以使用联合选择:

Select columnA from table1 union select columnA from table2 
于 2008-09-04T17:06:03.137 回答
0
SELECT Table1.*, Table2.d, Table2.e, Table2.f 
FROM Table1 JOIN Table2 ON Table1.a = Table2.a

还是我误解了你的问题?

编辑:看来我做到了。

于 2008-09-04T17:06:45.537 回答
0

我相信它是:

SELECT columna FROM table1 UNION SELECT columnb FROM table2;
于 2008-09-04T17:06:53.493 回答
0

在 Oracle 中(至少)有 UNION 和 UNION ALL,UNION ALL 将返回两个集合中的所有结果,即使有重复,UNION 将返回两个集合的不同结果。

于 2008-09-04T17:08:06.470 回答