我有一个包含两个表(Table1
和Table2
)的数据库。它们都有一个共同的列[ColumnA]
,即nvarchar
.
如何从两个表中选择此列并将其作为结果集中的单个列返回?
所以我正在寻找类似的东西:
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
.
如何从两个表中选择此列并将其作为结果集中的单个列返回?
所以我正在寻找类似的东西:
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
此外,如果您知道 Table1 和 Table2 的内容永远不会重叠,则可以使用 UNION ALL 代替 UNION。这样可以节省一点资源。
——凯文·费尔柴尔德
你在乎你有没有被骗吗?
UNION 会比 UNION ALL 慢,因为 UNION 会过滤掉重复数据
使用UNION运算符:
SELECT ColumnA FROM Table1
UNION
SELECT ColumnA FROM Table2
联合答案几乎是正确的,具体取决于重叠值:
SELECT distinct ColumnA FROM Table1
UNION
SELECT distinct ColumnA FROM Table2
如果 'd' 出现在 Table1 中或 'c' 出现在 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;
在 Oracle 中(至少)有 UNION 和 UNION ALL,UNION ALL 将返回两个集合中的所有结果,即使有重复,UNION 将返回两个集合的不同结果。