成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

工作面試必備:SQL 中的各種連接 JOIN 的區別總結!

數據庫 其他數據庫
ON條件是在生成臨時表時使用的條件,它不管ON中的條件是否為真,都會返回左邊表中的記錄(以左連接為例)。WHERE條件是在臨時表生成好后,再對臨時表產生的數據進行過濾條件篩選。

前言

盡管大多數開發者在日常工作中經常用到Join操作,如Inner Join、Left Join、Right Join等,但在面對特定查詢需求時,選擇哪種Join類型以及如何使用On和Where子句往往成為一大挑戰。特別是對于初學者而言,這些概念可能顯得抽象且難以區分。在實際應用中,錯誤地使用Join類型或混淆On與Where子句的功能,都可能導致數據查詢結果的不準確或遺漏關鍵信息。

今天大姚給大家講解一下SQL中關于Join、Inner Join、Left Join、Right Join、Full Join、On、Where區別和用法。

SQL連接JOIN圖解

圖片圖片

數據庫表結構和對應數據

本文咱們用的是MS Sql Server作為數據操作示例。

Students 學生表:

圖片圖片

Class 班級表:

圖片圖片

Join(where聯立查詢)

概念:用于兩表或多表之間數據聯立查詢。

select * from Students s,Class c where s.ClassId=c.ClassId

圖片圖片

Inner Join(內連接查詢)

概念:與Join相同,兩表或多表之間聯立查詢數據,因此我們在使用多表join查詢的時候既可以使用where關聯,也可以是inner join關聯查詢。

select * from Students s inner join  Class c  on s.ClassId=c.ClassId

圖片圖片

Left Join(左連接查詢)

概念:以左表中的數據為主,即使與右表中的數據不匹配也會把左表中的所有數據返回。

select * from Students s left join  Class c on s.ClassId=c.ClassId

圖片圖片

Right Join(右連接查詢)

概念:與Left Join的用法相反,是以右表中的數據為主,即使左表中不存在匹配數據也會把右表中所有數據返回。

select * from Students s right join  Class c  on s.ClassId=c.ClassId

圖片圖片

Full Join(全連接查詢)

概念:返回表中所有的數據數據,無論匹配與否。

select * from Students s Full JOIN  Class c  on s.ClassId=c.ClassId

圖片圖片

On、Where的異同

這兩個概念中也是絕大多數人無法區分到底它們兩者之間有何區別,我什么時候使用On,什么時候使用Where,下面將分別展示兩者的異同。

On條件的作用:

ON的使用無論是左右內全都使用到了On來進行關聯!

對于inner join 的作用就是起到了與where相同的作用條件篩選:

select * from Students s inner join  Class c  on s.ClassId=c.ClassId and s.Sex='男'

圖片圖片

對于左右連接而言,無論查詢條件是否滿足都會返回對應所指向的那邊的所有數據:

select * from Students s left join  Class c  on s.ClassId=c.ClassId and s.Sex='男'

圖片圖片

對于Full Join 而言無論,只有同時滿足的時候才會返回全部關聯的數據,假如有一方不滿足返回以左邊的表數據為基準返回:

--全連接
select * from Students s full join  Class c  on s.ClassId=c.ClassId
 
--全連接加on查詢
select * from Students s full join  Class c  on s.ClassId=c.ClassId and s.Sex='男'

圖片圖片

圖片圖片

WHERE條件的作用:

WHERE條件在臨時表生成后的過濾階段應用,對最終結果進行篩選。此時LEFT JOIN的“保留左表所有記錄”特性已失效,WHERE 會過濾掉不符合條件的行(包括左表記錄),如下所示:

僅返回右表 ClassId=1 的匹配記錄,左表中無匹配的記錄會被過濾掉。

select * from Students s left join Class c on s.ClassId=c.ClassId WHERE c.ClassId=1

區別總結:

一句話概括:ON用作于生成臨時表時的條件篩選,WHERE用作于對臨時表中的記錄進行過濾。

  • ON條件是在生成臨時表時使用的條件,它不管ON中的條件是否為真,都會返回左邊表中的記錄(以左連接為例)。
  • WHERE條件是在臨時表生成好后,再對臨時表產生的數據進行過濾條件篩選。
責任編輯:武曉燕 來源: 追逐時光者
相關推薦

2023-10-08 07:37:44

SQL連接

2019-04-16 15:18:28

SQLJOIN數據庫

2010-09-09 15:51:22

sqlinner join語法

2023-02-28 07:40:09

編譯器Java線程安全

2019-03-18 15:00:48

SQLJoin用法數據庫

2020-02-16 12:05:35

javascript前端面試

2020-09-18 12:00:24

Spark SQLJoin數據庫

2010-05-21 17:30:28

2010-11-08 15:47:01

SQL Server外

2010-11-11 13:51:36

SQL Server內

2009-05-12 10:55:06

SQLFOR XML模式

2017-10-20 11:12:12

數據類型關鍵字對象

2010-09-09 15:43:13

SQLjoin語法

2021-04-02 08:00:00

工程師IT首席技術官

2023-06-07 07:43:57

數據庫JOIN類型

2022-04-02 10:23:12

MySQL數據庫

2021-08-12 07:49:25

Git 索引HEAD

2009-06-16 15:03:53

Hibernate保存Hibernate

2018-04-03 15:20:07

數據庫MySQLjoin連接

2023-03-08 07:50:57

企業數據治理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美精品国产一级在线 | 精品国产99 | 97久久精品午夜一区二区 | 青青草原精品99久久精品66 | 国产一区二区三区网站 | 亚洲视频一区在线观看 | 91av免费观看 | 亚洲理论在线观看电影 | 欧美激情视频一区二区三区在线播放 | 特黄毛片视频 | 综合久久网 | 国产精品一级 | 日日日日日日bbbbb视频 | 午夜视频一区二区 | 日韩三级免费观看 | 日本高清不卡视频 | 欧美精品片 | 国产精品久久 | 日本a级大片 | 一区在线观看视频 | 国产精品久久久久久久久婷婷 | 国产精品久久久久一区二区三区 | 国产精品国产a | 午夜免费网站 | 日本在线中文 | 日韩一区在线播放 | 中文字幕加勒比 | 国产成人自拍一区 | 欧美精品一二区 | 视频一区中文字幕 | 国产精品一级 | 一二三区在线 | 欧洲一区二区三区 | 91精品久久久久久久久久入口 | 91一区二区| 国产综合久久久久久鬼色 | 日操操夜操操 | 九九热精品在线 | 成人免费观看男女羞羞视频 | av在线免费观看网址 | 免费一二区 |