左外连接与where语句的区别

例:

表A:user_info;

字段:user_nametitle_id

孙悟空  1

猪八戒  2

唐三藏  3

沙悟净  4

表B:user_title;

字段:title_id,title_name;

1 打手

2 食客

3 圣人


想获得每个人物的名称与职业

select ui.user_name,ut.title_name from user_info ui,user_title ut where ui.title_id = ut.title_id;

查询出来的结果会是:

user_name title_name

孙悟空 打手

猪八戒 食客

唐三藏 圣人


因为这条sql语句的过滤条件是ui.title= ut.title_id , 必须全部匹配上才会将结果查询出来。

沙悟净就给漏掉了 , 这样的话 , 将会导致我们所需要的数据不完成.

解决方法是用左外连接:

通用写法:

select ui.user_name,ut.title_name from user_info ui left join user_title ut on ui.title_id = ut.title_id;
oracle写法:

select ui.user_name,ut.title_name from user_info ui,user_title ut where ui.title_id = ut.title_id(+);

查询出来的结果会是:

user_name title_name

孙悟空 打手

猪八戒 食客

唐三藏 圣人

沙悟净 (null)


这样的话,数据就全了,就算沙悟净暂时没上班,至少没把他给漏掉,呵呵。


如果有什么地方说错了,请指正。谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值