首页 > 数据库 >MYSQL join..on 后的and 和where的区别

MYSQL join..on 后的and 和where的区别

时间:2022-11-11 09:12:54浏览次数:39  
标签:count join .. providerId smbms where 连接

今天在写SQL语句时发现一个问题

select count(1) as count from smbms_bill b left join smbms_provider p on b.providerId = p.id 
                                                    and b.providerId = 2 and b.isPayment = 1

这句sql后面的 and b.providerId = 2 and b.isPayment = 1 并没有起作用。

解释

如果 把这句sql这么改就对了

select count(1) as count from smbms_bill b left join smbms_provider p on b.providerId = p.id 
                                                    where b.providerId = 2 and b.isPayment = 1

1.where 是在两个表join完成后,再附上where条件

2.而 and 则是在表连接前过滤A表或B表里面哪些记录符合连接条件,同时会兼顾是left join还是right join。

假如是左连接的话,如果左边表的某条记录不符合连接条件,那么它不进行连接,但是仍然留在结果集中(此时右边部分的连接结果为NULL)。

on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

3.建议尽量用where来过滤条件

标签:count,join,..,providerId,smbms,where,连接
From: https://www.cnblogs.com/fu-heng/p/16879495.html

相关文章