oracle 中 的left join 用法

zzx_xhhhhh 2016-07-11 06:54:32
table a,table b, a,b两张表,a表中有 serv_id,acc_nbr,kh_sx(客户属性 分为政企和公众),b表中有serv_id,qf_charge
现在关联 a,b两表,select distinct a.*,b.qf_charge
from table a left join table b
on a.serv_id=b.serv_id and a.kh_sx='公众' ; 为什么这样关联出来 a表是全量出来的,公众和政企都出来了
...全文
1546 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2016-07-11
  • 打赏
  • 举报
回复
在 left join 中,a left join b on a.id = b.id ,是对 B 条件的过滤。 而 where 后的条件,是对结果集的过滤; 有兴趣的话,你研究一下 inner join ,他上 left join 有很大的不同;
zzx_xhhhhh 2016-07-11
  • 打赏
  • 举报
回复
select distinct m.*,b.charge from ( select distinct a.* from table a where a.kh_sx='公众用户' )m left join table b on m.serv_id=b.serv_id; 我用这样 也行,用你的这种也行,但是为啥直接left join 左表的条件语句就不管用了呢
卖水果的net 2016-07-11
  • 打赏
  • 举报
回复
from table a left join table b on a.serv_id=b.serv_id and a.kh_sx='公众' ; 改成下面试试 from table a left join table b on a.serv_id=b.serv_id where a.kh_sx='公众' ;
zzx_xhhhhh 2016-07-11
  • 打赏
  • 举报
回复
但是我表、a 限制了a.kh_sx='公众' 这个条件啊,为啥没起作用。
卖水果的net 2016-07-11
  • 打赏
  • 举报
回复
a left join table b 就是 表 a 的全数据;

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧