关于left join on 和where条件放置的相关讲解
left join on 和where条件的放置问题在php中很重要,本篇会详解其相关知识。
left join里面带and的查询
SELECT p.pname,p.pcode,s.saletime from product as p left join sales_detail as s on (s.pcode=p.pcode) and s.saletime in ('2012-07-23','2012-07-05');
查出来的结果:
+-------+-------+------------+
| pname | pcode | saletime |
+-------+-------+------------+
| A | AC | 2012-07-23 |
| A | AC | 2012-07-05 |
| A | AC | 2012-07-05 |
| B | DE | NULL |
| C | XXX | NULL |
+-------+-------+------------+
直接where条件查询
SELECT p.pname,p.pcode,s.saletime from product as p left join sales_detail as s on (s.pcode=p.pcode) where s.saletime in ('2012-07-23','2012-07-05');
查询出来的结果
+-------+-------+------------+
| pname | pcode | saletime |
+-------+-------+------------+
| A | AC | 2012-07-23 |
| A | AC | 2012-07-05 |
| A | AC | 2012-07-05 |
+-------+-------+------------+
结论:on中的条件关联,一表数据不满足条件时会显示空值。where则输出两表完全满足条件数据
left join里面的条件:会以左表的基准数据,凡左表出现的数据均要出现,然后再进行join右表,只要关联上的就需要查出来,如果相应的字段没有值或不符合条件的话就置为NULL。
SELECT p.pname,p.pcode,s.saletime from product as p left join sales_detail as s on (s.pcode=p.pcode) ;光左连接的话显示的内容如下
+-------+-------+------------+
| pname | pcode | saletime |
+-------+-------+------------+
| A | AC | 2012-07-23 |
| A | AC | 2012-07-05 |
| A | AC | 2012-07-05 |
| B | DE | 2012-07-16 | 这里面有值
| C | XXX | NULL | 这里面没有值
+-------+-------+------------+
有值但是不符合条件的话就置为NULL。如果没有值肯定为NULL
如果是where条件的话就肯定是要满足才行。
应用场景:比如有个主表,那以主表为基准去显示数据可以考虑left join的方式处理
总结:
1. 对于left join,不管on后面跟什么条件,左表的数据全部查出来,因此要想过滤需把条件放到where后面
2. 对于inner join,满足on后面的条件表的数据才能查出,可以起到过滤作用。也可以把条件放到where后面。
SQL中on条件与where条件的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
在使用left jion时,on和where条件的区别如下:
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
本篇对left join 和where条件的放置相关的知识做出了讲解,更多的学习资料清关注php中文网即可观看。
相关推荐:
以上是关于left join on 和where条件放置的相关讲解的详细内容。更多信息请关注PHP中文网其他相关文章!
热AI工具
Undress AI Tool
免费脱衣服图片
Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片
AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。
Clothoff.io
AI脱衣机
Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!
热门文章
热工具
记事本++7.3.1
好用且免费的代码编辑器
SublimeText3汉化版
中文版,非常好用
禅工作室 13.0.1
功能强大的PHP集成开发环境
Dreamweaver CS6
视觉化网页开发工具
SublimeText3 Mac版
神级代码编辑软件(SublimeText3)
热门话题
MySql中如何使用JOIN
Jun 04, 2023 am 08:02 AM
JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接。先创建两个表,下面用于示例CREATETABLEt_blog(idINTPRIMARYKEYAUTO_INCREMENT,titleVARCHAR(50),typeIdINT);SELECT*FROMt_blog;+----+-------+--------+|id|title|typeId|+----+-------+--------+|1|aaa|1||2|bbb|2||3|ccc|3|
left键盘是哪个键
Mar 13, 2023 pm 02:27 PM
left键盘是方向左键,right是方向右键,一般情况下键盘以符号或箭头代替,个别键盘有使用英文标注;键盘是用于操作设备运行的一种指令和数据输入装置,也指经过系统安排操作一台机器或设备的一组功能键。
MySQL Join使用原理是什么
May 26, 2023 am 10:07 AM
Join的类型leftjoin,以左表为驱动表,以左表作为结果集基础,连接右表的数据补齐到结果集中rightjoin,以右表为驱动表,以右表作为结果集基础,连接左表的数据补齐到结果集中innerjoin,结果集取两个表的交集fulljoin,结果集取两个表的并集mysql没有fulljoin,union取代union与unionall的区别为,union会去重crossjoin笛卡尔积如果不使用where条件则结果集为两个关联表行的乘积与,的区别为,crossjoin建立结果集时会根据on条件过
Laravel 集合中的 Where 方法实用指南
Mar 10, 2024 pm 04:36 PM
Laravel集合中的Where方法实用指南在Laravel框架的开发过程中,集合(Collection)是一个非常有用的数据结构,它提供了丰富的方法来操作数据。其中,Where方法是一个常用的筛选方法,能够根据指定条件来过滤集合中的元素。本文将介绍Laravel集合中Where方法的使用,通过具体的代码示例来演示其用法。1.基本用法Where方法的
MySQL中JOIN怎么用
Jun 03, 2023 am 09:30 AM
简介A的独有+AB的公有B的独有+AB的公有AB的公有A的独有B的独有A的独有+B的独有+AB的公有A的独有+B的独有练习建表部门表DROPTABLEIFEXISTS`dept`;CREATETABLE`dept`(`dept_id`int(11)NOTNULLAUTO_INCREMENT,`dept_name`varchar(30)DEFAULTNULL,`dept_number`int(11)DEFAULTNULL,PRIMARYKEY(`dept_id`))ENGINE=InnoDBAUT
mysql的join查询和多次查询方法是什么
Jun 02, 2023 pm 04:29 PM
join查询和多次查询比较MySQL多表关联查询效率高点还是多次单表查询效率高?在数据量不够大的时候,用join没有问题,但是一般都会拉到service层上去做第一:单机数据库计算资源很贵,数据库同时要服务写和读,都需要消耗CPU,为了能让数据库的吞吐变得更高,而业务又不在乎那几百微妙到毫秒级的延时差距,业务会把更多计算放到service层做,毕竟计算资源很好水平扩展,数据库很难啊,所以大多数业务会把纯计算操作放到service层做,而将数据库当成一种带事务能力的kv系统来使用,这是一种重业务,
Laravel 集合中如何使用 Where 方法
Mar 10, 2024 pm 10:21 PM
Laravel集合中如何使用Where方法Laravel是一个流行的PHP框架,它提供了丰富的功能和工具,方便开发者快速构建应用程序。其中,集合(Collection)是Laravel中一个非常实用和强大的数据结构,开发者可以使用集合对数据进行各种操作,如过滤、映射、排序等。在集合中,Where方法是一个常用的方法,用于根据指定的条件过滤集
利用MySQL的JOIN函数进行表的连接操作
Jul 26, 2023 am 08:37 AM
利用MySQL的JOIN函数进行表的连接操作在MySQL中,JOIN是一种非常常用的操作,它允许我们将两个或多个表根据它们之间的关联字段进行连接。这样可以方便地从多个表中查询和获取相关数据,提高查询效率和灵活性。本文将使用代码示例演示如何利用MySQL的JOIN函数进行表的连接操作。先创建两个示例表:students和scores。students表包含学生


