淘先锋技术网

首页 1 2 3 4 5 6 7

Oracle中的UNION是一种非常常用的SQL操作,能够将两个或多个SELECT语句的结果合并成一个结果集,并自动去重。下面通过举例来详细介绍UNION的用法。

假设我们有两个表,一个是employees表,一个是students表,它们的结构如下:

CREATE TABLE employees (
emp_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
salary INT
);
CREATE TABLE students (
stu_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
gpa FLOAT
);

我们现在想要获取所有员工和学生的姓名,并将它们合并成一个名称列表(即包含成员名称的一列数据),可以通过以下UNION语句实现:

SELECT first_name || ' ' || last_name AS full_name
FROM employees
UNION
SELECT first_name || ' ' || last_name AS full_name
FROM students;

上述语句中,我们将employees表和students表的full_name合并,同时使用“||”来连接名和姓,并通过UNION操作自动去重。

除了两个查询的列数和类型必须匹配外,UNION还有一个非常重要的限制,就是每个查询必须使用相同的列别名或表达式(即上述例子中的“full_name”)。

此外,UNION还可以和其他关键字一起使用,比如ORDER BY和WHERE。下面我们举例说明:

SELECT first_name || ' ' || last_name AS full_name, 'employee' AS member_type
FROM employees
UNION
SELECT first_name || ' ' || last_name AS full_name, 'student' AS member_type
FROM students
WHERE gpa >3.0
ORDER BY full_name;

上述语句中,我们将employees表中的员工和students表中GPA>3.0的学生合并,并在结果中包含member_type列,通过ORDER BY按照full_name排序。

总的来说,UNION是一种非常实用的SQL操作,可以用于合并多个SELECT语句的结果集,并去除重复,同时可以和其他关键字一起使用,扩展其功能。