ON是连接条件,WHERE是结果条件
假设有两个表
a表 记录会员信息(名字)
id name
1 tom
2 mary
3 jerry
4 john
b表 记录会员所有的好友信息,(名字及是否在线)
id pid friend isonline
1 1 cherry 1
2 3 stone 0
3 4 york 0
4 1 1
5 3 mary 1下面我们想统计每个会员有多少个好友在线,使用下面的语句即可
select a.id,a.name,count(b.friend) from a
left join b on a.id=b.pid and b.isonline =1
group by a.id这个时候结果如下
a.id a.name count(b.friend)
1 tom 2
2 mary null
3 jerry 1
4 john 0
但如果使用
select a.id,a.name,count(b.friend) from a
left join b on a.id=b.pid
where b.isonline = 1
group by a.id
结果如下
a.id a.name count(b.friend)
1 tom 2
3 jerry 1结果1的NULL表明该会员没有好友, 结果2只显示了有好友并且有在线好友的会员,在线好友为0的也不会显示,因为where将连接后的结果重新过滤,
假设有两个表
a表 记录会员信息(名字)
id name
1 tom
2 mary
3 jerry
4 john
b表 记录会员所有的好友信息,(名字及是否在线)
id pid friend isonline
1 1 cherry 1
2 3 stone 0
3 4 york 0
4 1 1
5 3 mary 1下面我们想统计每个会员有多少个好友在线,使用下面的语句即可
select a.id,a.name,count(b.friend) from a
left join b on a.id=b.pid and b.isonline =1
group by a.id这个时候结果如下
a.id a.name count(b.friend)
1 tom 2
2 mary null
3 jerry 1
4 john 0
但如果使用
select a.id,a.name,count(b.friend) from a
left join b on a.id=b.pid
where b.isonline = 1
group by a.id
结果如下
a.id a.name count(b.friend)
1 tom 2
3 jerry 1结果1的NULL表明该会员没有好友, 结果2只显示了有好友并且有在线好友的会员,在线好友为0的也不会显示,因为where将连接后的结果重新过滤,
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货