1.多表关联的执行条件
这里有三张表 A B C
A B C
+----+ +----+ +----+
| id | | id | | id |
+----+ +----+ +----+
| 1 | | 1 | | 10 |
| 2 | | 2 | | 20 |
| 3 | | 3 | | 3 |
| 4 | | 4 | | 4 |
| 5 | +----+ +----+
| 10 |
+----+
三张表执行left join的条件不同产生不同的结果 如下:
select v1.id,count(1)
from
(
select id
from A
)v1 left join
(
select id
from B
)v2 on v1.id=v2.id left join
(
select id
from C
)v3 on v2.id=v3.id #这里不同
where v2.id is null and v3.id is null
group by v1.id;
+----+----------+
| id | count(1) |
+----+----------+
| 5 | 1 |
| 10 | 1 |
+----+----------+
1 row in set
select v1.id,count(1)
from
(
select id
from A
)v1 left join
(
select id
from B
)v2 on v1.id=v2.id left join
(
select id
from C
)v3 on v1.id=v3.id #这里不同
where v2.id is null and v3.id is null
group by v1.id;
+----+----------+
| id | count(1) |
+----+----------+
| 5 | 1 |
+----+----------+