小编Jam*_*lle的帖子

LEFT JOIN with WHERE 子句如何工作?

鉴于下面的查询

    SELECT * FROM tableA 
    LEFT JOIN tableB ON tableB.id = tableA.id
    WHERE tableA.name = 'e'
Run Code Online (Sandbox Code Playgroud)

.

tableA                        tableB
-----------                   ----------- 
id    name                     id    school
-----------                   -----------  
1     a                         1     AA
2     b                         2     BB                     
3     c                         3     CC                     
4     d                         4     DD                     
5     e                         5     EE  
Run Code Online (Sandbox Code Playgroud)

.

令我困惑的是背后发生的过程。

在仅从 WHERE 子句中选择行之前,系统是否首先对 tableA 和 tableB 进行 JOIN?

如果是,那么这个查询呢

SELECT * FROM 
(
    SELECT * FROM tableA     
    WHERE name = 'e'

) A LEFT JOIN tableB ON tableB.id = A.id 
Run Code Online (Sandbox Code Playgroud)

此查询在连接另一个表之前是否先使用 …

mysql join

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

join ×1

mysql ×1