A left join B join C 和 A left join (B join C)有什么区别

数据

表A

idcity
1a
2b
3
4d

 

表B

cityname
ax1
bx2
x3

 

表C

nameamount
x1100
x2200

 

WITH tmp1 AS (
SELECT 1 AS id, 'a' AS city
UNION ALL
SELECT 2 AS id, 'b' AS city
UNION ALL
SELECT 3 AS id, 'c' AS city
UNION ALL
SELECT 4 AS id, 'd' AS city
UNION ALL
SELECT 5 AS id, 'e' AS city
),
tmp2 AS (
SELECT 'a' AS city, 'x1' AS name
UNION ALL
SELECT 'b' AS city, 'x2' AS name
UNION ALL
SELECT 'c' AS city, 'x3' AS name    
),
tmp3 AS (
SELECT 'x1' AS name, 100 AS amount
UNION ALL
SELECT 'x2' AS name, 200 AS amount  
)



--1:A left join B join C
SELECT a.id,b.city,c.amount FROM tmp1 a
	LEFT JOIN tmp2 b ON a.city = b.city
	JOIN tmp3 c ON b.name = c.name;

--2:A left join (B join C)
SELECT a.id,d.*
from (
	SELECT *
	FROM tmp1
 )a 
LEFT JOIN (
	select b.city,c.amount from tmp2 b 
	JOIN tmp3 c ON b.name = c.name
)d
on a.city =d.city

结果1:

idcityamount
1a100
2b200

 

结果2:

idcityamount
1a100
2b200
3  
4  
5  

 

以上。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值