鉴于下面的查询
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)
此查询在连接另一个表之前是否先使用 …