当前位置:网站首页>Ali three sides: what is the difference between using on or where in the left join associated table and the condition
Ali three sides: what is the difference between using on or where in the left join associated table and the condition
2022-06-28 11:42:00 【Java enthusiast】
Before, a coder went to Alibaba for an interview , 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 .
author :jcpp9527
blog.csdn.net/wqc19920906/article/details/79785424
边栏推荐
- 【无标题】虚拟机vmnet0找不到且报错:没有未桥接的主机网络适配器
- Pre parsing, recursive functions and events in day25 JS 2021.09.16
- [sciter]: how sciter uses i18 to realize multi language switching of desktop applications and its advantages and disadvantages
- Contract quantification system development (construction explanation) - contract quantification system development (source code analysis and ready-made cases)
- day32 js笔记 事件(上)2021.09.27
- 《运营之光3.0》全新上市——跨越时代,自我颠覆的诚意之作!
- 无法重新声明块范围变量
- Setinterval, setTimeout and requestanimationframe
- 培训通知|2022年境外中资企业机构及人员疫情防控和安全防范专题培训通知
- 关于Pytorch中双向LSTM的输出表示问题
猜你喜欢

Industry analysis - quick intercom, building intercom

ThreadLocal的简单理解

网页提示此站点不安全解决方案

JS foundation 3

Redis6 1: what problems can be solved by the introduction of NoSQL and redis?

赛尔号抽奖模拟求期望

Day36 JS notes ecma6 syntax 2021.10.09

Practice and Thinking on the architecture of a set of 100000 TPS im integrated message system

js中的数组方法 2021.09.18

day33 js笔记 事件(下)2021.09.28
随机推荐
ThreadLocal的简单理解
东方财富手机股票开户哪个券商更安全更方便?
Splicing strings in the string collection_ Stream based
QML控件类型:TabBar
董宇辉,新东方以及凤凰卫视
面试步骤的面试技巧
Simple understanding of ThreadLocal
【sciter】: sciter-fs模块扫描文件API的使用及其注意细节
day33 js笔记 事件(下)2021.09.28
科研丨Web of Science检索技巧
Gee: mcd64a1 based globfire daily fire data set
使用API快捷创建ECS
Redis6 1: what problems can be solved by the introduction of NoSQL and redis?
Zero foundation self-study SQL course | if function
Packaging and publishing application of jetpack compose desktop version
100 important knowledge points that SQL must master: retrieving data
毕业了
[sword finger offer] 49 Ugly number
Redis6 一:Nosql引入、Redis可以解决什么问题?
mysql-. SQL file phishing Online