左连接的左边为什么不全显示
left join后面加上where条件浅析
select a.*,b.*
from table1 a
left join table2 b on b.X=a.X
where XXX
如上:一旦使用了left join,没有where条件时,左表table1会显示全部内容
使用了where,只有满足where条件的记录才会显示(左表显示部分或者全部不显示)
so。。。。
left join的困惑:一旦加上where条件,则显示的结果等于inner join
原因分析:
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户;
where条件是在临时表生成好后,再对临时表进行过滤的条件;
因此:where 条件加上,已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
解决方案:
1、where过滤结果作为子查询,和主表left,如下:
select a.*,tmp.*
from table1 a
left join(select a.*,b.*from table1 aleft join table2 b on b.X=a.Xwhere XXX
)tmp
很明显,子查询语句无论 left join、inner join都没啥区别了
2、查询条件放在on后面
1 2 3 |
|
注意:where XXX去掉,改为链接条件on后面的 and XXX
分析:
on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
结论 a表和b表 做关联
1. on a.id=b.id and a.name='张三' 这种在on后边直接and 的对a表无效 只要不加where 左边永远都是全显示
2.on a.id=b.id where a.name='张三' 这种则查出只有是张三的数据
左连接的左边为什么不全显示相关推荐
- 连接查询 左连接 右连接 内连接 1112 sqlserver
1112连接查询 内联连 关键词 inner join-on inner join...on 格式 表1 inner join 表2 on 表1.列 = 表2.列 表1 inner join 表2 o ...
- SQL 查询笔记:子查询,分组查询,左连接查询。。。。。
表结构: CREATE TABLE dept ( id int NOT NULL, dname varchar ( 50 ) DEFAULT NULL, loc varchar ( 50 ) DEFA ...
- mysql内连接和外连接的区别_数据库左连接、右连接、内连接、全连接区别
基本定义: left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录. right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录. inner j ...
- 数据库中查询的各种连接(左连接,右连接,全连接,内连接,交叉连接,自连接)...
转:http://www.cnblogs.com/Caiqinghua/archive/2013/05/15/3079397.html 左右连接其实就是以哪个表为主(或者说为准),结果集为" ...
- sql的左连接,右连接,内连接
环境: SQL工具(如Navicat,SQLyog) MySQL驱动 全局总结: 左连接:关注左边,右边没有就为空. 右连接:关注右边,左边没有就为空. 内连接:返回交集 必备: 两张或多张表格 一, ...
- sql查询:单表、多表、左连接、外连接、高级查询
sql查询 一.sql语句 标准SQL包含了4种基本的语句类别: (1)DDL语句,数据定义语句,主要用来定义数据库,表名,字段,例如create,drop,alter. (2)DML语句,数据操作语 ...
- SQL中的各种连接的区别总结(内连接,左连接,左外连接,右连接,右外连接,全连接,全外连接)
在数据库中建立两张表方便大家理解,teacher和student表(student表中的teacherid字段是对应teacher表中的ID,举个例子张三的老师就是李四,没有teacherid就是这个 ...
- SQL中的左连接与右连接,内连接有什么区别
例子,相信你一看就明白,不需要多说 A表(a1,b1,c1) B表(a2,b2) 左连接: select A.*,B.* from A left outer join B on(A.a1=B.a2) ...
- 左右链接php,sql的左连接和右连接有什么区别
sql的左连接和右连接区别:1.左连接只要左边表中有记录,数据就能检索出来,而右连接是只要右边表中有记录:2.左连接是已左边表中的数据为基准,而右联接是左向外联接的反向联接. 本文操作环境:Windo ...
最新文章
- 有趣的Github项目万里挑一 !(附论文、项目链接)
- C语言函数strstr()分析及实现
- laravel5.6 分页样式目录
- InstallShield使用——菜单部分
- 再见了微服务,DDD已成气候!
- 2018 ICPC Asia Jakarta Regional Contest
- 请求和响应向更多内容
- input内容右对齐_向右打方向倒库过程中,如何判断后车距离?光线较暗车库倒库技巧...
- OpenShift 4 - DevSecOps Workshop (15) - 利用OpenShift GitOps向多个目标部署应用
- python成长之路10——socketserver源码分析
- 对string类型字符串操作
- 【CentOS 7架构8】,域名跳转#171221
- 2021年南宁二中高考成绩查询,2021年广西南宁二中高考物理冲刺试卷(一).docx...
- zabbix中mysql连不上的排错_zabbix使用排错 - oschina130111的个人空间 - OSCHINA - 中文开源技术交流社区...
- java 构造函数嵌套_java – spring – 构造函数注入和覆盖嵌套bean的父定义
- 【纯干货】中国的支付清算体系是怎么玩的?
- ubuntu显卡测试软件,Linux显卡性能测试程序Unigine Valley 和 Unigine Heaven
- 基于Pytorch实现的声音分类
- HCIP 数通资料下载 肖哥视频
- 服务器软硬件安装和配置,Windows Server 2016-系统安装软硬件要求