Oracle中的两表联合查询(oracle 两个表匹配)
Oracle中的两表联合查询
在Oracle中,联合查询(Union Query)是一种结合两条或更多SQL查询结果的方法,将这些结果合并成一张临时表。它的语法如下:
SELECT column_name(s) FROM table_name1
UNIONSELECT 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
);
然后,插入一些数据:
```sqlINSERT 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中使用两表联合查询的简单介绍,希望能够帮助到大家。