📅  最后修改于: 2023-12-03 15:20:19.206000             🧑  作者: Mango
在SQL中,JOIN和UNION是两种常用的操作,但它们的作用和用法却有所不同。下面将对JOIN和UNION进行详细介绍和比较。
JOIN操作用于将两个或多个表中的数据进行合并,生成新的数据集合。JOIN操作可以分为以下几种类型:
例如,假设有两个表students和scores,表结构如下:
students表:
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | Alice | 18 |
| 2 | Bob | 19 |
| 3 | Charlie | 20 |
+----+-------+------+
scores表:
+--------+--------+-------+
| stu_id | course | score |
+--------+--------+-------+
| 1 | math | 80 |
| 1 | english| 90 |
| 2 | math | 70 |
| 2 | english| 85 |
| 3 | math | 65 |
| 3 | english| 75 |
+--------+--------+-------+
使用INNER JOIN操作,可以将这两个表中的数据进行合并,例如:
SELECT * FROM students INNER JOIN scores ON students.id = scores.stu_id;
结果如下:
+----+-------+------+--------+--------+-------+
| id | name | age | stu_id | course | score |
+----+-------+------+--------+--------+-------+
| 1 | Alice | 18 | 1 | math | 80 |
| 1 | Alice | 18 | 1 | english| 90 |
| 2 | Bob | 19 | 2 | math | 70 |
| 2 | Bob | 19 | 2 | english| 85 |
| 3 | Charlie | 20 | 3 | math | 65 |
| 3 | Charlie | 20 | 3 | english| 75 |
+----+-------+------+--------+--------+-------+
UNION操作用于将两个或多个SELECT语句的结果集合并成一个结果集。要求每个SELECT语句中的列数和列类型必须一致。UNION操作将对结果集进行去重操作,如果需要保留重复行,可以使用UNION ALL操作。例如:
SELECT name, age FROM students WHERE age < 20
UNION
SELECT name, age FROM students WHERE name LIKE 'C%'
该语句将返回年龄小于20岁的学生和姓名以'C'开头的学生。
参考资料: