多表级联查询(left join)

本文深入探讨了数据库中的多表级联查询,特别是left join的使用。通过实例展示了如何级联五个表并利用on条件生成中间临时表。讲解了join、inner join、left join和right join的区别,以及on和where子句在查询中的不同作用。重点在于left join如何返回左表所有数据及满足条件的右表数据,而where则能对左右两表进行过滤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键字: on:数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

实例如下:

 

SELECT a.id AS ID,a.customer_key AS '推广员id',a.amount AS '金额', d.cooperation_code AS '合作点', e.total_amount AS '总收入',IF(e.amount='0' || e.amount is null,'已提现','未提现') AS '余额状态' FROM
rf_settlement_stat AS a
LEFT JOIN rf_promoter AS b ON a.customer_key = b.promoter_id
LEFT JOIN rf_balance AS e ON a.customer_key = e.customer_key
LEFT JOIN ql_cooperation_staff AS c ON c.jd_account = b.pin
LEFT JOIN ql_cooperation AS d ON d.cooperation_code = c.cooperation_code
WHERE a.tax_status='fini'
ORDER BY a.id ASC;

 

实例中级联了五个数据库表的查询,返回的数据中不管on条件是否满足,都是返回rf_settlement_stat表中的数据,最后通过where后的条件进行过滤后返回给用户;

其中查询的数据可通过if做条件判断转换展示数据;

 

级联查询的的链接方法:

join、inner join:返回的是级联表均满足on条件的记录;

left join、left outer join:返回的是满足左级联表的所有数据,和满足条件的右级联表的数据(如果右级联表为空则填充值为null);

right join、right outer join:和以上的条件查询相反,返回的是所有满足右级联表中的所有数据,和满足条件的左级联表数据(如果左级联表没有对应满足的则填充值为null);

on and和on where的区别用法:

1、left join查询返回所有左边数据,并返回满足ON后面条件的右表的数据,如果没有则右表数据返回null(on后面的条件包括and条件),此时on对左表没有作用只对右表过滤,如果右边不满足则返回null;where可对左表和右表进行过滤;

2、right join 同left join,主要其中是以右表为主;

3、inner join是返回左表和右表都要满足ON后面条件的记录;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值