left join on

今天问了一圈白痴问题,但因为脑子笨、反应慢,所以把大家的解答都记下来,以备以后常忘常查。
问题:
select * from A left join f on e.cust=f.account_id [color=darkred]where f.status='0'[/color]

select * from A left join f [color=darkred]on e.cust=f.account_id and f.status='0' [/color]
的区别

大家回复:
沈阳-佚名(280829721) 18:06:39
在做外连查询的时候ON里面的条件是在外连执行之前筛选的的
上海-芨芨草(29710632) 18:07:52
where的呢?
沈阳-佚名(280829721) 18:08:18
 外联之后
深圳-魔羯飞舞(5768534) 18:08:38
连接之后在按WHERE
上海-芨芨草(29710632) 18:09:45
但都会过滤掉的是吧,结果集应该是一样的吧?
沈阳-佚名(280829721) 18:09:53
不一样
深圳-魔羯飞舞(5768534) 18:12:41
left join f on e.cust=f.account_id where f.status='0'
left join f on e.cust=f.account_id and f.status='0‘
看你需要用咯
深圳-魔羯飞舞(5768534) 18:13:09
上面哪个是你左联后!再选出f.status='0'的
深圳-魔羯飞舞(5768534) 18:19:38
WHERE哪个说白了就是连主表都砍掉的


280829721 18:18:22
on 里的条件是先执行的
280829721 18:19:15
如果是where 的话,等于在两个表连接 了以后 再去 做过滤
佚名 18:20:21
如果是and ,就可以认为是on的条件先执行
佚名 18:20:30
不用在连接之后再去过滤
佚名 18:20:34
我是这么理解的


O(281349520) 18:13:16
To:芨芨草
可以肯定的告诉你,这两个语句绝对有分别,结果集绝对不一样。
O(281349520) 18:13:43
left join f on e.cust=f.account_id where f.status='0'
结果集里只存在f.status='0'的结果
O(281349520) 18:14:47
left join f on e.cust=f.account_id and f.status='0'
这个语句会把两个表的数据都列出来
O(281349520) 18:15:17
不过f这个表的数据并不会全部列出,只会列出f表的 f.status='0' 的数据
[img]/upload/attachment/47593/f7aa0a9a-f6da-3863-86c0-643285145da1.jpg[/img]

谢谢大家对我的帮助!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值