当前位置:网站首页>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 .
边栏推荐
- How to realize asynchronous programming in a synchronous way?
- Minecraft插件服开服
- 十年开发经验的程序员告诉你,你还缺少哪些核心竞争力?
- Mysql安装时mysqld.exe报`应用程序无法正常启动(0xc000007b)`
- History of Web Technology
- 统计字符串中各类字符的个数
- What is the future value of fluorite mine of karaqin Xinbao Mining Co., Ltd. under zhongang mining?
- QT qtimer class
- oracle修改数据库字符集
- Gocv image cutting and display
猜你喜欢

Redis zadd导致的一次线上问题排查和处理

Illegal use of crawlers, an Internet company was terminated, the police came to the door, and 23 people were taken away

Minecraft模组服开服

远程连接IBM MQ报错AMQ4036解决方法

QT -- how to set shadow effect in QWidget

Finishing the interview essentials of secsha system!!!

CSDN Q & A_ Evaluation

「Redis源码系列」关于源码阅读的学习与思考

Hengyuan cloud_ Can aiphacode replace programmers?

Cloudreve自建云盘实践,我说了没人能限制得了我的容量和速度
随机推荐
Oracle修改表空间名称以及数据文件
Matplotlib剑客行——容纳百川的艺术家教程
Qt QTimer类
oracle删除表空间及用户
C# 调用系统声音 嘀~
Minecraft group service opening
There is a problem with MySQL installation (the service already exists)
[staff] time sign and note duration (full note | half note | quarter note | eighth note | sixteenth note | thirty second note)
D interface and domain problems
Image transformation, transpose
gocv拆分颜色通道
During MySQL installation, mysqld Exe reports that the application cannot start normally (0xc000007b)`
Tensorflow2 keras classification model
WSL installation, beautification, network agent and remote development
Select sort and insert sort
Judge whether it is Sudoku
Oracle related statistics
寻找链表中值域最小的节点并移到链表的最前面
win10使用docker拉取redis镜像报错read-only file system: unknown
Driving test Baodian and its spokesperson Huang Bo appeared together to call for safe and civilized travel