美文网首页数据库
mysql数据库join联结中的on和where

mysql数据库join联结中的on和where

作者: 二狗不是狗 | 来源:发表于2019-11-11 21:37 被阅读0次

on和where的区别

1、where条件是在临时表生成好后,再对临时表进行过滤的条件;
2、on条件是在生成临时表前使用的条件,它会先做条件过滤,在做表联结。

示例表

后文的讲解都是基于下面示例表a和示例表b来进行的(左表a,右表b)


image.png

where使用

在联表语句中使用where是先联表查询生成临时表,在对临时表执行where条件过滤。

select * from a left join b on a.id=b.id where a.name="a11";

left join中使用on

对左表条件执行on:先对左表进行过滤;如果在条件中的记录正常联表;如果不在条件中的则展示左表,右表内容都是null。下面三个查询语句依次对应下图的三个结果

select * from a left join b on a.id=b.id and a.id=1;
select * from a left join b on a.id=b.id and a.id=2;
select * from a left join b on a.id=b.id and a.id=3;
image.png

对右表条件执行on:先对右表进行过滤;如果在条件中的记录正常联表;如果不在条件中的则展示左表,右表内容都是null。下面三个查询语句依次对应下图的三个结果

select * from a left join b on a.id=b.id and b.id=1;
select * from a left join b on a.id=b.id and b.id=2;
select * from a left join b on a.id=b.id and b.id=3;
image.png

right join中使用on

对左表条件执行on:先对左表进行过滤;如果在条件中的记录正常联表;如果不在条件中的则展示右表,左表内容都是null。下面三个查询语句依次对应下图的三个结果

select * from a right join b on a.id=b.id and a.id=1;
select * from a right join b on a.id=b.id and a.id=2;
select * from a right join b on a.id=b.id and a.id=3;
image.png

对右表条件执行on:先对右表进行过滤;如果在条件中的记录正常联表;如果不在条件中的则展示右表,左表内容都是null。下面三个查询语句依次对应下图的三个结果

select * from a right join b on a.id=b.id and b.id=1;
select * from a right join b on a.id=b.id and b.id=2;
select * from a right join b on a.id=b.id and b.id=3;
image.png

inner join中使用on

不论对左表还是右表条件执行on都是先对表执行条件,在联表。

select * from a join b on a.id=b.id and a.name="a111" and b.id=1;
image.png

相关文章

  • mysql数据库join联结中的on和where

    on和where的区别 1、where条件是在临时表生成好后,再对临时表进行过滤的条件;2、on条件是在生成临时表...

  • mysql联接查询

    关键字OUTER JOIN来指定联结的类型(而不是在WHERE子句中指定)。但是,与内部联结INNER JOIN关...

  • MySQL之联结表 JOIN

    本文主要说明MySQL中对表进行联结的方法,其中主要包括INNER JOIN,LEFT JOIN,RIGHT JO...

  • MYSQL联结(Join)

    1 联结的作用和分类 我们都知道Mysql数据库是一种关系型数据库,这种数据库的最大特点之一是每个数据表之间都通过...

  • MYSQL的JOIN中ON和WHERE的区别

    LEFT JOIN 左外连接:左表中的数据全部出现,所以右表的列中可能为NULL。 MYSQL语句:a LEFT ...

  • Java面试经典题目五(MySQL基础知识)

    MySQL数据库部分 【1】MySQL中Where, Group By, Having, Order by执行顺序...

  • Mysql必知必会笔记——中

    在使用多个联结时应该分别测试每个联结,这样使故障排除更简单。 联结 WHERE子句指示mysql匹配两个表中的ve...

  • SQL 使用联结(二)

    连载的上一篇文章,我们学习了内联结的创建,包括使用 WHERE 过滤联结、使用更明确的语法 INNER JOIN ...

  • SQLZOO - JOIN笔记(二)

    JOIN 表联结(二) 这次教程,介绍的还是 JOIN概念。数据库包含了movie , actor and cas...

  • MYSQL:SQL中优化相关

    MySQL优化-表之间JOIN的关键字ON和Where(01) https://www.cnblogs.com/t...

网友评论

    本文标题:mysql数据库join联结中的on和where

    本文链接:https://www.haomeiwen.com/subject/lwhxictx.html