我的编程空间,编程开发者的网络收藏夹
学习永远不晚

left join on后面 加条件 与 where后面加条件的区别

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

left join on后面 加条件 与 where后面加条件的区别

本文主要讲解left join on 和where 的区别,以及用法
首先
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

在使用left join时,on和where条件的区别如下:

on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉

使用:

单独使用left join时:

select         o.id id,         o.user_id ,         o.out_trade_no,         o.create_time,         o.state,         o.total_fee,         o.video_id,         o.video_title,         o.video_img,         u.name,         u.head_img,         u.create_time,         u.phone         from video_order o left join user u on o.user_id = u.id

在这里插入图片描述

这里video_order o是让o代替video_order 这个表,方便命名书写,它的作用首先是输出左表的全部数据,然后筛选右表,将符合的一一对应,与左表关联输出。注意这里是左表的全部数据均输出

再看另外一个left join on的例子

select         o.id id,         o.user_id ,         o.out_trade_no,         o.create_time,         o.state,         o.total_fee,         o.video_id,         o.video_title,         o.video_img,         u.name,         u.head_img,         u.create_time,         u.phone         from video_order o left join user u on o.user_id = u.id  and u.id=6

在这里插入图片描述
通过图示我们发现,这里也是显示左表的所有数据,不同在于,要筛选右表,右表不符合的显示为NULL;

join on与where同时使用
下面是我们更希望出现的样子,就是我们关联查询后,能过滤到左表我们不想要的东西

select         o.id id,         o.user_id ,         o.out_trade_no,         o.create_time,         o.state,         o.total_fee,         o.video_id,         o.video_title,         o.video_img,         u.name,         u.head_img,         u.create_time,         u.phone         from video_order o left join user u on o.user_id = u.id  where u.id=6

在这里插入图片描述
其实除了这个办法,我们还可以对左表用子查询进行筛选,具体代码如下

select o.order_id,o.user_id,u.user_id,u.user_namefrom ( select * from tb_order where order_id > 10 ) o LEFT JOIN tb_user u on o.user_id = u.user_id;

来源地址:https://blog.csdn.net/qq_44748801/article/details/123727426

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

left join on后面 加条件 与 where后面加条件的区别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解mysql 使用left join添加where条件的问题分析

当前需求:有group和factor两张表,一个group对应多个factor,现在想查询有效的group和对应的有效的factor,两个表都有isDel逻辑删除标志。最开始的错误写法一:SELECT g.*,f.* FROM groups
2022-05-29

编程热搜

目录