Oracle中的两表联合查询(oracle 两个表匹配)

Oracle中的两表联合查询

在Oracle中,联合查询(Union Query)是一种结合两条或更多SQL查询结果的方法,将这些结果合并成一张临时表。它的语法如下:

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2;

该语句首先检索table_name1和table_name2中的所有数据行,然后使用UNION运算符将它们合并到一个结果集中。需要注意的是,UNION查询返回的列数和列名必须相同,如果列数或列类型不同,则需要在查询中进行相应转换。

下面我们来通过一个具体的示例,介绍在Oracle中如何使用联合查询。

创建两张表students和teachers:

“`sql

CREATE TABLE students(

student_id INT PRIMARY KEY,

student_name VARCHAR(50),

class_name VARCHAR(50),

score INT

);

CREATE TABLE teachers(

teacher_id INT PRIMARY KEY,

teacher_name VARCHAR(50),

class_name VARCHAR(50),

salary INT

);


然后,插入一些数据:

```sql
INSERT INTO students VALUES(1, 'Alice', 'Math', 80);
INSERT INTO students VALUES(2, 'Bob', 'English', 90);
INSERT INTO students VALUES(3, 'Charlie', 'Math', 85);
INSERT INTO teachers VALUES(1, 'David', 'Math', 5000);
INSERT INTO teachers VALUES(2, 'Emily', 'English', 4500);
INSERT INTO teachers VALUES(3, 'Frank', 'Chemistry', 5500);

现在,如果我们要查询所有学生和教师的姓名和班级,我们可以使用如下的联合查询:

“`sql

SELECT student_name AS name, class_name AS class FROM students

UNION

SELECT teacher_name AS name, class_name AS class FROM teachers;


该查询会返回以下结果:

NAME CLASS

—- —–

Alice Math

Bob English

Charlie Math

David Math

Emily English

Frank Chemistry


需要注意的是,UNION查询默认去重,如果想保留重复项,可以改成UNION ALL。

以上就是在Oracle中使用两表联合查询的简单介绍,希望能够帮助到大家。

数据运维技术 » Oracle中的两表联合查询(oracle 两个表匹配)