Oracle中两个表的并集操作(oracle两个表取并集)
在Oracle数据库中,我们经常需要对两个表进行合并,得到它们的并集。Oracle提供了多种方法来实现这种操作。在本文中,我们将介绍如何使用UNION ALL和UNION来实现两个表的并集操作,并提供相应的代码实例。
一、UNION ALL操作
UNION ALL操作用于将两个SELECT语句的结果合并在一起,返回所有行。它不会删除任何重复的行,也不会对结果进行排序。
下面是一个使用UNION ALL操作的例子:
SELECT *
FROM table1UNION ALL
SELECT *FROM table2;
这个语句将table1和table2两个表中的所有行合并在一起,并返回所有的行。
代码示例:
CREATE TABLE table1 (
id INT, name VARCHAR2(50)
);
INSERT INTO table1 VALUES (1, 'Tom');INSERT INTO table1 VALUES (2, 'Jerry');
INSERT INTO table1 VALUES (3, 'Lucy');
CREATE TABLE table2 ( id INT,
name VARCHAR2(50));
INSERT INTO table2 VALUES (2, 'Jerry');INSERT INTO table2 VALUES (4, 'Mike');
INSERT INTO table2 VALUES (5, 'John');
SELECT *FROM table1
UNION ALLSELECT *
FROM table2;
该代码会返回以下结果:
ID NAME
1 Tom2 Jerry
3 Lucy2 Jerry
4 Mike5 John
二、UNION操作
UNION操作也是用于将两个SELECT语句的结果合并在一起,但它会删除重复的行,并对结果进行排序。
下面是使用UNION操作的例子:
SELECT *
FROM table1UNION
SELECT *FROM table2;
这个语句将table1和table2两个表中的所有行合并在一起,并删除重复的行。如果需要按照某个列进行排序,可以使用ORDER BY子句指定,例如:
SELECT *
FROM table1UNION
SELECT *FROM table2
ORDER BY id;
代码示例:
CREATE TABLE table1 (
id INT, name VARCHAR2(50)
);
INSERT INTO table1 VALUES (1, 'Tom');INSERT INTO table1 VALUES (2, 'Jerry');
INSERT INTO table1 VALUES (3, 'Lucy');
CREATE TABLE table2 ( id INT,
name VARCHAR2(50));
INSERT INTO table2 VALUES (2, 'Jerry');INSERT INTO table2 VALUES (4, 'Mike');
INSERT INTO table2 VALUES (5, 'John');
SELECT *FROM table1
UNIONSELECT *
FROM table2;
该代码会返回以下结果:
ID NAME
1 Tom2 Jerry
3 Lucy4 Mike
5 John
总结
在Oracle中,我们可以使用UNION ALL和UNION操作来实现两个表的并集操作。UNION ALL用于合并两个SELECT语句的结果,返回所有行;UNION操作也用于合并两个SELECT语句的结果,但它会删除重复的行,并对结果进行排序。我们可以根据实际需要选择合适的操作方式。