【SQL】外連接 LEFT JOIN

目錄

一.內連接與外連接

? ?1.內連接(inner join)

? ?2.外連接(outer join)

二.兩表連接

1.我們先來試試看內連接:

2.我們再來試試外連接

三.單表外連接

四.總結


一.內連接與外連接

? 先得介紹內連接和外連接兩個概念:

? ? ?要將兩張表連接,有兩種方式一種是內連接(inner join),第二種是內連接(outer join)

? ?1.內連接(inner join)

? ? ?這種連接需要:A,B表值都存在情況

? ?2.外連接(outer join)

? ? ?

外連接又分左外連接和右外連接

左外連接是取A表全部,B表沒有對應的值,則為null

右外連接是取B表全部,A表沒有對應的值,則為null

語法:

SELECT 列名
FROM 左表
LEFT JOIN 右表
ON 左表.列名 = 右表.列名;

? ?這樣介紹概念可能還是比較抽象,來看下面的例題:?


二.兩表連接

?例題鏈接:https://leetcode.cn/problems/combine-two-tables/description/

1.我們先來試試看內連接:

select firstname,lastname,city,state
from person,address
where person.personid=address.personid

? ? 我們可以發現輸出結果比答案結果少了一個Allen的數據,我們觀察上面的Person和Address表

我們發現Address表中的personid沒有allen的id,由于內連接是取交集所以Allen沒有被選中。

? ?這就是在前面概念中敘述的:A,B表值都存在情況

2.我們再來試試外連接

select firstname,lastname,city,state
from person left join address
on person.personid=address.personid;

? ? 這樣輸出就對了。

? ? ? ? ?我們可以可以這樣理解外連接,當左外連接時固定住左表,去右表中依據on之后跟的條件去尋找符合條件的行,若是沒尋找到則在那行寫null,即左表原有的數據全部不變,只是通過右表擴充列。 right join 則反之。

? ? ? 這就是前面說的:左外連接是取A表全部,B表沒有對應的值,則為null


三.單表外連接

? ? 例題鏈接:https://leetcode.cn/problems/rising-temperature/description/

? ? ?單表外連接用于檢索一個表中的所有數據

?

這題用內連接也能做出來,但是消耗的時間比外連接高太多了

上面時內連接,下面時外連接

所以我們直接來講怎么用外連接解決這題:

select w1.idfrom weather w1left join weather w2on datediff(w1.recordDate, w2.recordDate) = 1  #把每一天與前一天連接where w1.temperature > w2.temperature   #where 選擇下溫度大的

所以在有的時候用left join可以優化計算時間


四.總結

??

? ? ? ?內連接和外連接都是用于連接多個表的查詢操作。內連接是指只返回兩個表中符合條件的行,而外連接則會返回符合條件的行以及不符合條件的行。

? ? ? 當需要查詢兩個表中有關聯的數據,并且只想返回符合條件的數據時,應該使用內連接。內連接可以通過使用JOIN關鍵字或者WHERE子句來實現。

? ? ? ?當需要查詢兩個表中有關聯的數據,并且希望返回符合條件的數據以及不符合條件的數據時,應該使用外連接。外連接可以分為左外連接、右外連接和全外連接,分別表示返回左表中的所有數據、返回右表中的所有數據以及返回兩個表中的所有數據。

? ? ? ?因此,根據查詢需求來選擇使用內連接或外連接,可以更有效地獲取所需的數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14941.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14941.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14941.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第199題|關于函數的周期性問題|函數強化訓練(六)|武忠祥老師每日一題 5月24日

解題思路:解這道題我們要用到下面這個結論 f(x)連續,以T為周期時,原函數以T為周期的充分必要條件是: (A) sin x顯然是以π為周期的,我們可以看到并不等于0,根據結論,A的原函數顯然不是周期函數。 (B) 的…

memmove使?和模擬實現

一:memmove的使? 這是memmove在庫里的定義,具體可在cplusplus.com查看 void * memmove ( void * destination, const void * source, size_t num ) ? 和memcpy的差別就是memmove函數處理的源內存塊和?標內存塊是可以重疊的。 ? 如果源空間和?標…

你以為的私域是真正的私域嘛??你的私域流量真的屬于你嘛?

大家好 我是一個軟件開發公司的產品經理 專注私域電商行業7年有余 您的私域流量是真正的屬于你自己嘛? 私域的定義 私域的界定:一個互聯網私有數據(資產)積蓄的載體。這個載體的數據權益私有,且具備用戶規則制定權…

Mysql 備份恢復 mysqldump與xtrabackup備份

1.1 備份的原因 備份是數據安全的最后一道防線,對于任何數據丟失的場景,備份雖然不一定能恢復百分之百的數據 (取決于備份周期),但至少能將損失降到最低。衡量備份恢復有兩個重要的指標:恢復點目標(RPO) 和恢復時間目標(RTO)&…

數據庫常用命令(1)

DML 1.添加數據(insert into) insert into 表名 values (值1,值2....); 表示成功運行: 2.修改數據(update) update 表名 set 字段名1值1,字段名2值2.....【where條件】 3.刪除數據&#xff0…

元年科技數據智能研發部負責人張亞東受邀為第十三屆中國PMO大會演講嘉賓

全國PMO專業人士年度盛會 北京元年科技股份有限公司數據智能研發部負責人張亞東先生受邀為PMO評論主辦的2024第十三屆中國PMO大會演講嘉賓,演講議題為“大模型時代,AI創新型工具提升項目管理效率”。大會將于6月29-30日在北京舉辦,敬請關注&a…

jmeter之HTTP請求和查看結果樹

一、HTTP請求作用: 可以發送post或get請求等請求可以向服務器發送參數或消息體數據可以進行文件上傳 HTTP請求:是線程組內的取樣器最常用的的一個原件 二、查看界面 添加一個HTTP請求:選擇線程組–添加–取樣器–HTTP請求 默認界面 名稱和…

ThreadLocal為什么會導致內存泄漏?

問題引出: ThreadLocal是為了解決什么問題而產生的? ThreadLocal發生內存泄漏的根本原因是什么? 如何避免內存泄漏的發生?定義 為了解決多個線程同時操作程序中的同一個變量而導致的數據不一致性的問題。 ??假設現在有兩個線程A…

如何獲取一個城市或者一個區域的玫瑰風向圖?

玫瑰風向圖是一種直觀展示風向和風速的圖形工具,它在氣象學、城市規劃、農業等領域都有廣泛的應用。那么,如何獲取某個城市或某個區域的玫瑰風向圖呢? 首先,我們可以借助互聯網資源獲取玫瑰風向圖。現代網絡技術發達,…

前端 防抖和節流

在前端開發中,防抖(Debounce)和節流(Throttle)是兩種常用的性能優化技術,尤其在處理頻繁觸發的事件時顯得尤為重要。無論是在用戶輸入、窗口調整大小,還是滾動事件中,這兩種技術都可…

3D 生成重建011-LucidDreamer 優化SDS過平滑結果的一種探索

3D 生成重建011-LucidDreamer 優化SDS過平滑結果的一種探索 文章目錄 0論文工作1論文方法2 效果 0論文工作 文本到3D生成的最新進展標志著生成模型的一個重要里程碑,為在各種現實場景中創建富有想象力的3D資產打開了新的可能性。雖然最近在文本到3D生成方面的進展…

自建公式,VBA在Excel中解一元一次方程

自建公式,VBA在Excel中解一元一次方程 文章目錄 前言一、運行效果圖二、操作思路三、代碼1.去除方程中未知數,將未知數轉為“*0”2.計算方程中常數3.計算方程中未知數的系數一,先將未知數替換成“*1”4.計算方程中未知數的系數二5.計算方程得數前言 小學必考內容:一元一次…

掌握Python基本語法的終極指南【基本語法部分】

一、基本語法部分 1.簡單數據類型 1.1字符串類型及操作 字符串訪問: 1.索引訪問 mystr"Hello world" #索引訪問 print(mystr[0]) #H print(mystr[-1]) #d print(mystr[-7]) #o print(mystr[6]) #w 2.切片訪問 [頭下標:尾下標] &#x…

齊護K210系列教程(三十二)_在線模型訓練

在線模型訓練 概念理解準備工作1 采集圖像1.1 圖像要求1.2 使用K210采集圖片 2 標注圖像3 打包數據集4 上傳數據4.1創建項目4.1.1圖像分類創建項目4.1.2圖像檢測創建項目 4.2上傳數據4.2.1分類檢測上傳數據4.2.2圖像檢測上傳數據 5 訓練模型6 部署模型以及測試7 測試效果7.1圖像…

leetcode 152. 乘積最大子數組

. - 力扣(LeetCode) 給你一個整數數組 nums ,請你找出數組中乘積最大的非空連續 子數組 (該子數組中至少包含一個數字),并返回該子數組所對應的乘積。 測試用例的答案是一個 32-位 整數。 示例 1: 輸入…

MongoDB關系處理:優化數據管理、提升性能的最佳實踐

MongoDB 是一種 NoSQL 數據庫,它使用文檔模型來存儲數據,這與關系型數據庫(RDBMS)有顯著不同。本文將詳細介紹 MongoDB 中的關系處理,包括基本語法、命令、示例、應用場景、注意事項和總結。 基本語法 文檔和集合 M…

30.靜態代碼分析工具clang-tidy

文章目錄 基本介紹安裝clang-tidy使用clang-tidy配置文件和格式文件配置文件格式文件使用配置文件和格式化文件 在代碼中設置排除clang-tidy檢測reference 歡迎訪問個人網絡日志🌹🌹知行空間🌹🌹 基本介紹 clang-tidy 是一個基于…

JDBC總結

目錄 JDBC(java database connection) JDBC連接數據庫步驟: 1. 在項目中添加jar文件,如圖所示 2.加載驅動類 向數據庫中插入數據代碼示例: 第一種: 第二種: 查詢操作 : 第一種: 第二種: JDBC(java database connection) java數據庫連接.api(應用程序編程接口) ,可…

Java中的垃圾回收機制

在Java編程語言中,垃圾回收(Garbage Collection, GC)機制是內存管理的一個核心部分。它的主要目標是自動釋放那些不再被程序使用的對象所占用的內存空間,從而防止內存泄漏,并確保程序的穩定運行。下面,我將…

一文講清!傳統企業的進銷存管理難題該怎么解決?

有沒有開源的進銷存軟件啊? 確實,市面上存在不少開源的進銷存軟件。但客觀地講,開源軟件往往面臨著安全隱患,因為代碼公開,容易成為黑客攻擊的目標。此外,開源軟件的功能模塊通常較為固定,難以…