当前位置:网站首页>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 .
边栏推荐
- D interface and domain problems
- Npoi export word font size correspondence
- 【Go实战基础】如何安装和使用 gin
- Openshift build image
- Openshift deployment application
- Function ‘ngram‘ is not defined
- [staff] time mark and note duration (staff time mark | full note rest | half note rest | quarter note rest | eighth note rest | sixteenth note rest | thirty second note rest)
- Cartoon rendering - average normal stroke
- Pclpy projection filter -- projection of point cloud to cylinder
- 2022/2/13 summary
猜你喜欢

MYSQL安装出现问题(The service already exists)

Openshift build image

Qt——如何在QWidget中设置阴影效果

Minecraft plug-in service opening

commands out of sync. did you run multiple statements at once

十年開發經驗的程序員告訴你,你還缺少哪些核心競爭力?

Minecraft插件服开服

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

Minecraft install resource pack

Kubernetes deploys Loki logging system
随机推荐
Minecraft air Island service
Qt的拖动事件
gocv拆分颜色通道
Sentinel reports failed to fetch metric connection timeout and connection rejection
Concise analysis of redis source code 11 - Main IO threads and redis 6.0 multi IO threads
[blackmail virus data recovery] suffix Crylock blackmail virus
C Baidu map, Gaode map, Google map (GPS) longitude and latitude conversion
Leetcode sword finger offer brush questions - day 22
C# 将网页保存为图片(利用WebBrowser)
Gocv image cutting and display
C language implementation of mine sweeping game
C# 高德地图 根据经纬度获取地址
Linux安装Oracle Database 19c RAC
C call system sound beep~
QT qtimer class
commands out of sync. did you run multiple statements at once
汉诺塔问题的求解与分析
HackTheBox-Gunship
Don't spend money, spend an hour to build your own blog website
Redis sorted set data type API and application scenario analysis