MySQL 的 LEFT JOIN 中的新列

MySQL 的 LEFT JOIN 中的新列

在本文中,我们将介绍 MySQL 的 LEFT JOIN 中的新列。LEFT JOIN 是 SQL 中 JOIN 操作的一种,它返回两个表中所有的行,其中左边的表中没有匹配的记录将会使用 NULL 值填充,而右边表中没有匹配的记录不会出现在结果中。

阅读更多:MySQL 教程

LEFT JOIN 的语法

LEFT JOIN 语法如下:

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

使用新列

在 LEFT JOIN 操作中,我们可以使用新列,这种新列可以使用已有的列,也可以是计算列或常量列。

使用已有的列

例如,我们有两个表格:

table1
+----+-------+
| id | name  |
+----+-------+
|  1 | Alice |
|  2 | Bob   |
|  3 | John  |
+----+-------+

table2
+----+---------+
| id | country |
+----+---------+
|  1 | US      |
|  2 | UK      |
+----+---------+

这里我们想将这两个表格左联接,使用 id 作为匹配列,并新建名称为 country 的列。我们可以使用如下的 SQL 语句:

SELECT table1.id, table1.name, table2.country
FROM table1
LEFT JOIN table2
ON table1.id = table2.id;

这将会返回以下结果:

+----+-------+---------+
| id | name  | country |
+----+-------+---------+
|  1 | Alice | US      |
|  2 | Bob   | UK      |
|  3 | John  | NULL    |
+----+-------+---------+

使用计算列

我们可以使用计算列作为新列。例如,我们有以下两个表格:

table1
+----+------------+
| id | date       |
+----+------------+
|  1 | 2021-01-01 |
|  2 | 2021-05-01 |
|  3 | 2022-01-01 |
+----+------------+

table2
+----+--------+
| id | status |
+----+--------+
|  1 | OK     |
|  3 | FAIL   |
+----+--------+

这里我们想以 id 为匹配列,并在结果中创建一个名称为 status 的新列。我们希望如果行被匹配到,那么 status 为表格 2 中的 status 值,否则为 NO STATUS。我们可以使用如下 SQL 语句:

SELECT table1.id, table1.date, IFNULL(table2.status, 'NO STATUS') AS status
FROM table1
LEFT JOIN table2
ON table1.id = table2.id;

这将会返回以下结果:

+----+------------+----------+
| id | date       | status   |
+----+------------+----------+
|  1 | 2021-01-01 | OK       |
|  2 | 2021-05-01 | NO STATUS |
|  3 | 2022-01-01 | FAIL     |
+----+------------+----------+

使用常量列

我们可以使用常量列作为新列。例如,我们有以下两个表格:

table1
+----+-------+
| id | name  |
+----+-------+
|  1 | Alice |
|  2 | Bob   |
|  3 | John  |
+----+-------+

这里我们想以 id 为匹配列,并在结果中创建一个名称为 role 的新列。我们不从表格 2 中选择任何列,而是使用值 ROLE_A 作为默认值。我们可以使用如下 SQL 语句:

SELECT table1.id, table1.name, 'ROLE_A' AS role
FROM table1;

这将会返回以下结果:

+----+-------+--------+
| id | name  | role  |
+----+-------+--------+
|  1 | Alice | ROLE_A |
|  2 | Bob|   3 | John  | ROLE_A |
+----+-------+--------+

小结

MySQL 的 LEFT JOIN 中的新列可以帮助我们创建与已有列、计算列或常量列相关的新列。这些新列可以被用于更好地理解并处理返回的结果集。使用上述的示例和方法,我们可以在 LEFT JOIN 中创建各种不同的新列。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程