SQL | 使用 JOIN USING 和 JOIN ON 的区别
在本文中,我们将介绍 SQL 中 JOIN USING 和 JOIN ON 的区别以及它们的用法和示例。
阅读更多:SQL 教程
JOIN USING
JOIN USING 是一种用于连接两个或多个表的 SQL 语句。它使用两个或多个表中的一个或多个公共列作为连接条件。
JOIN USING 的语法如下:
SELECT 列名
FROM 表1
JOIN 表2 USING (公共列)
以下是一个示例,假设我们有两个表:员工表(emp)和部门表(dept)。
员工表(emp)
| emp_id | emp_name | dept_id |
|---|---|---|
| 1 | Alex | 1 |
| 2 | Bob | 2 |
| 3 | Chris | 1 |
| 4 | David | 3 |
部门表(dept)
| dept_id | dept_name |
|---|---|
| 1 | Sales |
| 2 | IT |
| 3 | Finance |
现在,我们想要获取员工表和部门表中的数据,并且基于部门 ID 进行连接。我们可以使用 JOIN USING 来实现:
SELECT emp_id, emp_name, dept_name
FROM emp
JOIN dept USING (dept_id)
执行上述查询后,我们将获得以下结果:
| emp_id | emp_name | dept_name |
|---|---|---|
| 1 | Alex | Sales |
| 2 | Bob | IT |
| 3 | Chris | Sales |
| 4 | David | Finance |
JOIN ON
JOIN ON 是另一种用于连接表的 SQL 语句。它通过在表之间指定连接条件来连接表。与 JOIN USING 不同,JOIN ON 可以使用列(不仅仅是公共列)作为连接条件。
JOIN ON 的语法如下:
SELECT 列名
FROM 表1
JOIN 表2 ON (表1.列 = 表2.列)
以下是一个示例,我们使用前面提到的员工表(emp)和部门表(dept):
员工表(emp)
| emp_id | emp_name | dept_id |
|---|---|---|
| 1 | Alex | 1 |
| 2 | Bob | 2 |
| 3 | Chris | 1 |
| 4 | David | 3 |
部门表(dept)
| dept_id | dept_name |
|---|---|
| 1 | Sales |
| 2 | IT |
| 3 | Finance |
如果我们想要根据员工表中的部门 ID 和部门表中的部门 ID 连接两个表,我们可以使用 JOIN ON:
SELECT emp_id, emp_name, dept_name
FROM emp
JOIN dept ON (emp.dept_id = dept.dept_id)
执行上述查询后,我们将获得以下结果:
| emp_id | emp_name | dept_name |
|---|---|---|
| 1 | Alex | Sales |
| 2 | Bob | IT |
| 3 | Chris | Sales |
| 4 | David | Finance |
我们可以看到,JOIN ON 可以使用表中的任意列作为连接条件,而不仅仅局限于公共列。
总结
在本文中,我们介绍了 SQL 中 JOIN USING 和 JOIN ON 的区别。JOIN USING 是使用两个或多个表中的一个或多个公共列作为连接条件的 SQL 语句。JOIN ON 则是通过在表之间指定连接条件来连接表,可以使用任意列作为连接条件。根据实际需要,我们可以选择使用 JOIN USING 或 JOIN ON 来实现表的连接操作。
极客笔记