MySQL 如何将子查询转换为INNER JOIN?

MySQL 如何将子查询转换为INNER JOIN?

为了使其理解,我们使用以下表中的数据−

mysql>从客户选择*;
+-------------+----------+
|客户_ID |名称  |
+-------------+----------+
| 1 | Rahul   |
| 2 | Yashpal |
| 3 | Gaurav  |
| 4 | Virender |
+-------------+----------+
共有4行(0.00秒)

mysql>从reserve选择*;
+------+------------+
| ID   |Day        |
+------+------------+
|  1   | 2017-12-30 |
|  2   | 2017-12-28 |
|  2   | 2017-12-25 |
|  1   | 2017-12-24 |
|  3   | 2017-12-26 |
+------+------------+
共有5行(0.00秒)

现在,以下是一个子查询,将找到所有预订汽车的客户名称。

mysql>从客户选择名称WHERE customer_id在(从reserve选择id)中;
+----------+
|名称  |
+----------+
| Rahul   |
| Yashpal |
| Gaurav  |
+----------+
共有3行(0.00秒)

现在,通过以下步骤,我们可以将上述子查询转换为内连接−

  • 将子查询中命名为’Reserve’的表移动到FROM子句中。

  • WHERE子句将customer_id列与从子查询返回的id进行比较。

因此,将表的id列之间的表达式转换为显式的直接比较。

mysql>从客户,储备选择名称WHERE customer_id = id;
+----------+
|名称  |
+----------+
| Rahul   |
| Yashpal |
| Yashpal |
| Rahul   |
| Gaurav  |
+----------+
共有5行(0.00秒)

正如我们所看到的那样,上述结果并不完全与子查询的结果相同,因此使用DISTINCT关键字获取与下列结果相同的结果:

mysql>从客户,预留中选择DISTINCT名称WHERE customer_id = id;
+----------+
|名称  |
+----------+
| Rahul   |
| Yashpal |
| Gaurav  |
+----------+
共有3行(0.03秒)

阅读更多:MySQL 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程