📜  sql 从多个表中选择列名 - SQL (1)

📅  最后修改于: 2023-12-03 14:47:37.212000             🧑  作者: Mango

SQL 中从多个表中选择列名

在 SQL 中,我们可以从多个表中选择列名来获取需要的数据,这是 SQL 的强大功能之一。接下来,我们将介绍如何在 SQL 中从多个表中选择列名。

INNER JOIN

INNER JOIN 是最常用的连接类型之一,它可以将多个表中的数据进行连接,并只返回满足连接条件的行。下面是 INNER JOIN 的语法:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

其中,table1table2 是要连接的表,column_name 是要选择的列名。ON 关键字是连接条件,指定连接哪两个表的哪些列。如果要选择多个列,我们可以用逗号进行分隔。

LEFT JOIN

LEFT JOIN 与 INNER JOIN 类似,也是将多个表中的数据进行连接。但是,LEFT JOIN 还会返回左侧表中没有匹配的行,右侧表中没有匹配的列则会返回 NULL。下面是 LEFT JOIN 的语法:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

其中,table1table2 是要连接的表,column_name 是要选择的列名。ON 关键字是连接条件,指定连接哪两个表的哪些列。如果要选择多个列,我们可以用逗号进行分隔。

RIGHT JOIN

RIGHT JOIN 与 LEFT JOIN 类似,但是它会返回右侧表中没有匹配的行,左侧表中没有匹配的列则会返回 NULL。下面是 RIGHT JOIN 的语法:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

其中,table1table2 是要连接的表,column_name 是要选择的列名。ON 关键字是连接条件,指定连接哪两个表的哪些列。如果要选择多个列,我们可以用逗号进行分隔。

UNION

UNION 可以将多个 SELECT 语句的结果进行合并,并去重。它只能用于联合两个或多个具有相同列数的 SELECT 语句。下面是 UNION 的语法:

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

其中,table1table2 是要合并的表,column_name 是要选择的列名。需要注意的是,UNION 会自动去重,因此不需要在查询中加上 DISTINCT 关键字。

使用实例

假设我们有两个表格,一个是 employees 表格,另一个是 departments 表格。现在我们想要从这两个表格中选择姓名、部门、薪资这三个列,同时按照部门进行排序。下面是查询语句:

SELECT employees.name, departments.name, employees.salary
FROM employees
INNER JOIN departments
ON employees.department_id = departments.id
ORDER BY departments.name;

如果我们想要查询出所有员工的信息,包括没有部门的员工,那么可以使用 LEFT JOIN:

SELECT employees.name, departments.name, employees.salary
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id
ORDER BY departments.name;

如果我们想要查询出所有部门的信息,包括没有员工的部门,那么可以使用 RIGHT JOIN:

SELECT employees.name, departments.name, employees.salary
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.id
ORDER BY departments.name;

最后,如果我们想要合并两个表的信息,可以使用 UNION:

SELECT name, department_id, salary
FROM employees
UNION
SELECT name, id, NULL
FROM departments;

以上就是 SQL 中从多个表中选择列名的方法,INNER JOIN、LEFT JOIN 和 RIGHT JOIN 非常常用,UNION 则可以将多个查询结果合并成一个。这些语法可以帮助我们更方便地获取需要的数据。