sql中的left join多表关联

时间:2025-02-17 07:03:30

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 |
+----+----------+