当前位置:网站首页>Jd.com interviewer asked: what is the difference between using on or where in the left join association table and conditions
Jd.com interviewer asked: what is the difference between using on or where in the left join association table and conditions
2022-07-02 09:07:00 【Programmer Qiqi】
Code friends went to jd.com for an interview before , Asked about LEFT JOIN Used in association table ON still WHERE What's the difference with the conditions , It was answered soon , But ask what caused this situation , I didn't answer for a while .
Now let's talk about it. , Want to pass A left B join on and The latter condition makes the two records found become one , But there are still two .
It turned out join on and The number of result records will not be filtered , Only according to and Whether or not the condition after is displayed B The record of the table ,A The record of the table is bound to show .
No matter and The back is A.id=1 still B.id=1, All show A All the records in the table , And associated display B In the corresponding A In the table id by 1 Or B In the table id by 1 The record of .
function sql :
select * from student s left join class c on s.classId=c.id order by s.id
function sql :
select * from student s left join class c on s.classId=c.id and s.name=" Zhang San " order by s.id
function sql :
select * from student s left join class c on s.classId=c.id and c.name=" Class 3, grade 3 " order by s.id
When a database returns records by connecting two or more tables , Will generate a temporary table in the middle , Then the temporary table is returned to the user .
In the use of left jion when ,on and where The conditions differ as follows :
1、 on The condition is the condition used to generate the temporary table , It doesn't care on Is the condition in true , Will return to the records in the table on the left .
2、where The condition is that after the temporary table is generated , Then filter the temporary table . There is no such thing as left join The meaning of ( You have to go back to the records in the table on the left ) 了 , If the conditions are not true, filter them out .
Suppose there are two tables :
surface 1:tab2
id
size
1
10
2
20
3
30
surface 2:tab2
size
name
10
AAA
20
BBB
20
CCC
Two article SQL:
1、select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name='AAA'
2、select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name='AAA')Article 1 with a SQL The process of :
1、 In the middle of table
on Conditions :
tab1.size = tab2.size
tab1.idtab1.sizetab2.sizetab2.name
1
10
10
AAA
2
20
20
BBB
2
20
20
CCC
3
30
(null)
(null)
|
|
2、 Then filter the middle table
where Conditions :
tab2.name=’AAA’
tab1.idtab1.sizetab2.sizetab2.name
1
10
10
AAA
Second SQL The process of :
1、 In the middle of table
on Conditions :
tab1.size = tab2.size and tab2.name=’AAA’
( If the condition is not true, the record in the left table will be returned )
tab1.idtab1.sizetab2.sizetab2.name
1
10
10
AAA
2
20
(null)
(null)
3
30
(null)
(null)
In fact, the key reason for the above results is left join,right join,full join The particularity of , No matter on Whether the condition on is true or not will be returned left or right The records in the table ,full It has left and right The union of the properties of . and inner jion It's not that special , The conditions are as follows on neutralization where in , The result set returned is the same .
边栏推荐
- Mirror protocol of synthetic asset track
- Cloud computing in my eyes - PAAS (platform as a service)
- HackTheBox-Gunship
- Minecraft群組服開服
- kubernetes部署loki日志系统
- Gocv image cutting and display
- Qt QTimer类
- 使用递归函数求解字符串的逆置问题
- Mysql安装时mysqld.exe报`应用程序无法正常启动(0xc000007b)`
- Pyspark de duplication dropduplicates, distinct; withColumn、lit、col; unionByName、groupBy
猜你喜欢

cmd窗口中中文呈现乱码解决方法

Openshift deployment application

C4D quick start tutorial - C4d mapping

Web技术发展史

【Go实战基础】gin 如何自定义和使用一个中间件

Installing Oracle database 19C for Linux

C language implementation of mine sweeping game

小米电视不能访问电脑共享文件的解决方案

Win10 uses docker to pull the redis image and reports an error read only file system: unknown

HackTheBox-Gunship
随机推荐
十年開發經驗的程序員告訴你,你還缺少哪些核心競爭力?
C # save web pages as pictures (using WebBrowser)
【Go实战基础】gin 如何绑定与使用 url 参数
Linux安装Oracle Database 19c RAC
First week of JS study
Installing Oracle database 19C RAC on Linux
Tensorflow2 keras 分类模型
Minecraft install resource pack
Minecraft模组服开服
[staff] common symbols of staff (Hualian clef | treble clef | bass clef | rest | bar line)
Avoid breaking changes caused by modifying constructor input parameters
Don't spend money, spend an hour to build your own blog website
判断是否是数独
队列管理器running状态下无法查看通道
选择排序和插入排序
Shengshihaotong and Guoao (Shenzhen) new energy Co., Ltd. build the charging pile industry chain
远程连接IBM MQ报错AMQ4036解决方法
「Redis源码系列」关于源码阅读的学习与思考
使用递归函数求解字符串的逆置问题
【Go实战基础】gin 如何自定义和使用一个中间件