LEFT JOIN与WHERE同时用,带给我的重灾难!

1. 表信息

1.1 用户表

1.2 用户兴趣爱好表

2. left join 语句【本文论点】

SELECT
  *
FROM
  d_user u
  LEFT JOIN d_hobby h ON u.id = h.userId
WHERE
  h.hobby != '睡觉'

思考一下这段SQL的查询结果是什么?(思考完看评论区,有结果)

SELECT
  *
FROM
  d_user u
  LEFT JOIN d_hobby h ON u.id = h.userId
  AND h.hobby != '睡觉'

再思考一下这段SQL的查询结果又是什么?(思考完看评论区,有结果)

3. left join总结

3.1 我的错误论据:

我一直以为上面第一段SQL语句的结果是用户表中所有的数据,不管有没有where!!

3.2 客观论据:

1. 先将left join的左表的所有符合结果查询出来;

2. 查询完left join的关联数据后,再用where语句对其进行过滤(先后关系,涉及where语句要注意一下)。

4. 提问

第二段SQL中为什么d_hobby表中为NULL的数据也被过滤掉了?

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值