假设有两种表:test_on_position表和address表,address表存放地址,test_on_position存放会员及其常用的地址,数据如下:

address表:

test_on_position表:

1. left join

条件在where后面

SELECT
*
FROM
test_on_position
LEFT JOIN address ON test_on_position.address = address.id
WHERE
test_on_position.address IS NOT NULL

运行结果:

条件在on后面

SELECT
*
FROM
test_on_position
LEFT JOIN address ON test_on_position.address = address.id AND test_on_position.address IS NOT NULL

运行结果:

结果分析

当条件放在on后面时,无论on条件的真假,都会返回左表的值;

当条件放在where后面时,只有满足条件的记录会返回。

inner join

条件在on后面

SELECT
*
FROM
test_on_position
INNER JOIN address ON test_on_position.address = address.id AND test_on_position.address IS NOT NULL

运行结果:

条件在where后面

SELECT
*
FROM
test_on_position
INNER JOIN address ON test_on_position.address = address.id
WHERE
test_on_position.address IS NOT NULL

运行结果:

结果分析

无论条件放在哪里,都只会返回满足条件的结果。

MySQL中条件放在where后面与放在on后面的区别的更多相关文章

  1. 待续--mysql中key 、primary key 、unique key 与index区别

    mysql中key .primary key .unique key 与index区别

  2. MySQL中redo log、undo log、binlog关系以及区别

    MySQL中redo log.undo log.binlog关系以及区别 本文转载自:MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结 ...

  3. mysql中tinyint、smallint、mediumint,int 和bigint 的区别

    1:字节的定义:字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位. 一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间 2.在mysql中一个汉字占三个 ...

  4. mysql中key 、primary key 、unique key 与index区别

    一.key与primary key区别 CREATE TABLE wh_logrecord ( logrecord_id ) NOT NULL auto_increment, ) default NU ...

  5. MYSQL中replace into的用法以及与inset into的区别

    在向表中插入数据时,我们经常会遇到这样的情况:1.首先判断数据是否存在:2.如果不存在,则插入:3.如果存在,则更新. 在SQL Server中可以这样处理: if not exists (selec ...

  6. mysql中的count(primary_key)、count(1)、count(*)的区别

    表结构如下: mysql> show create table user\G; *************************** 1. row ********************** ...

  7. Mysql中eft join、right join、inner join的区别

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...

  8. MySQL中myisam和innodb的主键索引有什么区别?

    MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.下图是MyISAM索引的原理图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索 ...

  9. MYSQL中inner join、left join 和 right join的区别

    首先join连接是用来进行多表关联查询的,join连接方式有三种连接方式:inner join.left join 和 right join 1.inner join 可以简写成join,叫内连接,查 ...

随机推荐

  1. JVM实践

    package com.lsw.classloader; import java.io.FileInputStream;import java.lang.reflect.Field;import ja ...

  2. NB-IoT协议及其PSM

    物联网技术发展趋势是LPWAN,其中尤其以NB-IoT和eMTC最为代表.NB-IoT和eMTC各有优劣,使用场景互有不同. 低功耗可以说是物联网技术的核心,本着关注低功耗的方向,适当了解NB IoT ...

  3. GIT 分支管理:创建与合并分支、解决合并冲突

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

  4. odoo中的ORM操作

    ORM方法简介 OpenERP的关键组件, ORM是一个完整的对象关系映射层,是开发人员不必编写基本的SQL管道. 业务对象被声明继承字models.Models的python类. 这让业务对象在OR ...

  5. 使用gulp和bable实现实时编译ES6代码

    这篇文章最初发表在我自己折腾的博客站点上:使用gulp和bable实现实时编译ES6代码,该博客用了一位前辈开源的源码,基于thinkjs和vuejs开发,欢迎大家来逛逛. 问题描述> 项目开发 ...

  6. HTML5-应用程序缓存(Application Cache)

    一.什么是应用程序缓存? HTML5 引入了应用程序缓存(Application Cache),这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问. 二.优势 离线浏览 - 用户可在应用 ...

  7. C#批量插入数据到Sqlserver中的四种方式 - 转

    先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...

  8. 微软下一代Web前端技术Blazor(C#编译为WebAssembly)

    W3C Web标准化机构在制定下一代的网页技术WebAssembly.目前版本是1.0,主流浏览器的最新版本都已经支持.其特点是浏览器可以执行编译后的二进制程序,不需要像之前的程序,浏览器下载Java ...

  9. C# SignalR 即时通信

    MSDN教程:https://docs.microsoft.com/en-us/aspnet/signalr/ 个人博客:http://www.cnblogs.com/zhili/p/SignalRQ ...

  10. CentOS 7 安装Redis

    Linux安装Redis 一.下载并安装 $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz $ tar xzf redis-2. ...