left/right/inner/all join以及 on后面的查询条件

本文深入解析SQL中的Left/Right/Inner/All Join操作,详细阐述了on与where条件在Join查询中的不同作用,帮助读者理解如何高效地进行数据联接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.on后面没有多余查询条件

当查询a表b表是,on后面只有一个连接条件:a.feild=b.field

  • left join on
    以左表(a)为主,查询出所有的a表数据,匹配不上的b表数据置为null
  • right join on
    以右表(b)为主,查询出所有的b表数据,匹配不上的a表数据置为null
  • inner join on
    只保留两张表(a,b)的完全匹配结果
  • all join on
    保留所有的结果,匹配不上的a,b表数据都会置为null

2.匹配条件放在(left join) on 和where后面的区别

参考链接:https://blog.youkuaiyun.com/czhphp/article/details/18657341

  • on条件用来决定如何从B表中检索数据行,如果B表中没有一行数据符合,将会生成一行所有列均为null的数据
  • 匹配阶段 WHERE 子句的条件都不会被使用。仅在匹配阶段完成以后,WHERE 子句条件才会被使用。它将从匹配阶段产生的数据中检索过滤
 SELECT a.*,b.* FROM product a LEFT JOIN product_details b ON a.id=b.id AND b.weight = 44 ;

在这里插入图片描述

 SELECT a.*,b.* FROM product a LEFT JOIN product_details b ON a.id=b.id where b.weight = 44 ;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值