什么是Union
在Oracle数据库中,UNION是一种用于合并两个或多个SELECT语句的操作符,返回一个结果集。合并的 SELECT 语句中所选择的列数必须相等,列的类型也必须兼容(具有相同的数据类型或最相似的数据类型)。
UNION操作符用于合并两个或多个SELECT语句的结果集,返回一个结果集。注意,只有不包含重复行的结果才能被返回。 如果需要包含重复行,则可以使用UNION ALL。
例如,下面的两个SELECT语句将返回一个包含所有匹配行的结果:
SELECT column1 FROM table1
UNION
SELECT column1 FROM table2;
Union使用示例
Case 1: 简单的UNION使用
下面是一个基本的使用UNION操作符合并两个表的例子:
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
上述例子中,我们选择了两个表,TABLE1和TABLE2,并将它们的数据合并成一个结果集。
Case 2: 使用UNION ALL合并表
UNION ALL操作符与UNION类似,但它允许结果集包含重复行。
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;
上述例子中,选择了两个表,TABLE1和TABLE2,并将它们的数据合并成一个结果集,其中包括重复的行。
Case 3: 使用嵌套SELECT语句
可以使用嵌套SELECT语句来使用UNION操作符,如下所示:
SELECT * FROM (
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2
) AS t
WHERE t.column1 = 'value';
上述例子中,我们使用了一个嵌套的SELECT语句来执行UNION操作。 这个例子选择两个表中所有符合条件的记录,并将它们合并到一个结果集中,然后从这些数据中检索出特定的值。
Case 4: 使用ORDER BY排序
使用UNION操作符时,您可能想要对结果进行排序,可以添加ORDER BY子句,如下所示:
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2
ORDER BY column1;
上述例子中,我们选择两个表,并将这些表的数据合并为一个结果集,然后按列1排序。
Case 5: 使用WHERE子句过滤数据
可以使用WHERE子句过滤要合并的数据。 例如,下面的SQL语句选择TABLE1和TABLE2中满足WHERE子句的记录,并将它们合并到一个结果集中。
SELECT column1, column2 FROM table1
WHERE column1 = 'value1'
UNION
SELECT column1, column2 FROM table2
WHERE column1 = 'value2';
上述例子中,我们选择两个表,并将这些表的数据合并为一个结果集,其中第一个表中的数据包含列1值为'VALUE1'的记录,而第二个表中的数据包含列1值为'VALUE2'的记录。
总结
在Oracle数据库中,UNION用于组合两个或多个SELECT语句的结果集,返回一个结果集。合并的SELECT语句中所选择的列数必须相等,列的类型也必须兼容。 如果需要包含重复行,则可以使用UNION ALL。
您还可以使用嵌套的SELECT语句、ORDER BY子句和WHERE子句来过滤和排序数据。