文档章节

mysql left/right join on 和where的细小差异

Linland
 Linland
发布于 2015/05/27 16:02
字数 337
阅读 128
收藏 21

    总是在暴漏出bug的时候,才发现自己对知识掌握的不深入。

    存在两张表结构

drop table if EXISTS A;
CREATE TABLE A (
  ID int(1) NOT NULL,
  PRIMARY KEY  (ID)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
insert into A values ( 1 );
insert into A values ( 2 );
insert into A values ( 3 );
insert into A values ( 4 );
insert into A values ( 5 );
insert into A values ( 6 );
drop table if EXISTS B;
CREATE TABLE B (
  ID int(1) NOT NULL,
  PRIMARY KEY  (ID)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
insert into B values ( 1 );
insert into B values ( 2 );
insert into B values ( 3 );

sql1: select  A.ID as AID, B.ID as BID   from A left join B on A.ID = B.ID where B.ID<3

sql2: select  A.ID as AID, B.ID as BID  from A left join B on A.ID = B.ID and  B.ID<3

结果是不一样的。

sql1结果:

sql2结果:

ON与where的使用注意事项:

(1):ON后面的筛选条件主要是针对的是关联表【而对于主表刷选条件不适用】,主表条件在on后面时附表只取满足主表帅选条件的值、而主表还是取整表

(2):对于主表的筛选条件应放在where后面,不应该放在ON后面

(3):对于关联表我们要区分对待。如果是要条件查询后才连接应该把查询件放置于ON后。如果是想再连接完毕后才筛选就应把条件放置于where后面


本文转载自:http://xianglp.iteye.com/blog/868957

Linland
粉丝 31
博文 51
码字总数 15762
作品 0
西安
数据库管理员
私信 提问
(六)MySQL数据库-常用连接查询(UNION、JOIN)

版权声明:转载请注明原文地址 https://blog.csdn.net/Super_RD/article/details/89763601 (六)MySQL数据库-常用连接查询(UNION、JOIN) 我的系统版本为CentOS7.5,MySQL版本为5.7.26 为了...

Super_RD
05/02
0
0
left join right join inner join*

left outer join、right outer join 、inner outer join是sql里面用的很多的,所以需要深入理解它的用法 a left b,如果a表的一条记录匹配中了b表的多条记录,那么最后会返回多条记录。 a le...

cjun1990
2016/12/27
22
0
Mysql 多表联合查询效率分析及优化

多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: [sql]view plaincopyprint? SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM......

蓝狐乐队
2014/04/30
224
0
MySQL JOIN连接查询知识点

MySQL JOIN连接查询知识点 MySQL支持的join操作:JOIN、STRAIGHT_JOIN、LEFT JOIN、RIGHT JOIN。不支持FULL OUTER JOIN。 在MySQL中,JOIN, CROSS JOIN, 和INNER JOIN相互等价。但是在正常的...

Gen_zhou
2016/08/12
245
0
Mysql left join,right join,inner join的效率比较

一.Join语法概述 join 用于多表中字段之间的联系,语法如下: table1:左表;table2:右表。 JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关...

mickelfeng
2017/10/25
200
0

没有更多内容

加载失败,请刷新页面

加载更多

手机视频如何制作GIF动图

很多小伙伴都喜欢用GIF动图在各大社交软件上与好友斗图,那你知道这些好玩有趣的GIF动图是如何制作的吗?下面教你一个将手机视频制作成GIF动图的方法,让你都可以随时随地制作有趣的表情包,...

白米稀饭2019
24分钟前
4
0
Spring Security 实战干货:实现自定义退出登录

1. 前言 上一篇对 Spring Security 所有内置的 Filter 进行了介绍。今天我们来实战如何安全退出应用程序。 2. 我们使用 Spring Security 登录后都做了什么 这个问题我们必须搞清楚!一般登录...

码农小胖哥
今天
10
0
JVM核心知识-类加载机制

JVM中类的生命周期包括7个阶段,加载、准备、验证、解析、初始化、使用、卸载。其中准备、验证、解析被归为连接阶段。 加载 jvm在这个阶段完成的工作 通过类名获取类的二进制字节流 将这个字...

moon888
今天
8
0
.net工作流引擎ccflow流程结束相关功能的介绍

关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明 工作流设计 工作流快速开发平台 业务流程管理 bpm工作流系统 java工作流主流框架 自定义...

孟娟
今天
8
0
APP 值入轻量级钱包以太坊网络钱包

APP 值入轻量级钱包以太坊网络钱包

xiaodong16
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部