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 中创建各种不同的新列。
极客笔记