SQL SELECT Union SELECT FROM (选择...)

Posted

技术标签:

【中文标题】SQL SELECT Union SELECT FROM (选择...)【英文标题】:SQL SELECT Union SELECT FROM (Select...) 【发布时间】:2013-05-30 14:30:07 【问题描述】:

我正在使用视图,但不能使用临时表。是否可以:

SELECT * FROM table1 UNION SELECT * FROM (SELECT * FROM table 3)

我意识到它糟糕的编码习惯选择 *,我只是将其用作示例。任何帮助将不胜感激!

【问题讨论】:

是的,假设 table1 和 table3 的列具有相同的数据类型且顺序相同 需要注意的一点是,除非您尝试删除重复项,否则您可能需要使用 Union All。仅使用联合,您就可以让查询也执行合并连接。 【参考方案1】:

该查询解析为:

(SELECT * FROM table1)
UNION
(SELECT * FROM (SELECT * FROM table 3))

在 SQL Server 中,这将返回缺少别名错误。所以,添加别名:

(SELECT * FROM table1)
UNION
(SELECT * FROM (SELECT * FROM table 3) t)

【讨论】:

【参考方案2】:

是的。

如果有相同的列数.. 它会工作

或尝试这些代码

SELECT A.COL1, A.COL2 FROM TABLE1 A 

UNION 

SELECT B.COL1, B.COL2 FROM (SELECT C.COL1, C.COL2 FROM TABLE3)

【讨论】:

【参考方案3】:

我想知道为什么你需要将它包装在一个子查询中,是不是可以直接做到这一点

SELECT * FROM table1
UNION
SELECT * FROM table3

【讨论】:

以上是关于SQL SELECT Union SELECT FROM (选择...)的主要内容,如果未能解决你的问题,请参考以下文章

sql 查询结果合并union all用法_数据库技巧

SQL UNION 和 UNION ALL 操作符SQL SELECT INTO 语句SQL CREATE DATABASE 语句

第八十章 SQL命令 UNION

SQL SELECT Union SELECT FROM (选择...)

oracle 里SQL语句UNION怎么用

sql UNION SELECT