1. 程式人生 > >sql之left join、right join、inner join的區別以及適用場景

sql之left join、right join、inner join的區別以及適用場景

left join(左連線) 返回包括左表中的所有記錄和右表中連線欄位相等的記錄

Table A

id name

01 abc

02 ab

Table B

idcnt

013

034

Select A.id,A.name,B.cnt A leftjoin B on A.id=B.id

結果

id name cnt

01 abc3

02 abnull

特別地,也有記錄條數大於左邊表的時候,例如:

Table A

id name

01 abc

02 ab

Table B

idcnt

013

015

034

Select A.id,A.name,B.cnt A left join B on A.id=B.id

結果

id name cnt

01 abc3

01 abc5

02 abnull

結果是3條記錄,比左連線左邊的表table A的記錄條數2還要多。

連線欄位即兩表的id欄位

right join(右連線) 返回包括右表中的所有記錄和左表中連線欄位相等的記錄

Table B

idcnt

013

034

Table A

id name

01 abc

02 ab

Select A.id,A.name,B.cnt B right join A on A.id=B.id

結果

id name cnt

01 abc3

02 abnull

左連線和右連線很相似,只是左右表位置的不同罷了。適用場景,如:員工表中有個欄位是詳細地址資訊表的主鍵id,這兩個表相關聯時,就可以用左連線或右連線,因為在詳細地址資訊表中找不到某員工的地址資訊也要將員工這條記錄顯示出來,相應的詳細地址資訊欄位為空即可,而不能因為地址沒有存在資料庫裡,這個員工就沒了(簡單理解成不重要的資訊不影響整條記錄的顯示)


inner join(等值連線、內連線) 只返回兩個表中連線欄位相等的

Table A

id name

01 abc

02 ab

Table B

idcnt

013

034

Select A.id,A.name,B.cnt A inner join B on A.id=B.id

結果

id name cnt

01 abc3內連線的適用場景:相連線的兩個表中必須在某個欄位上有相等的值才可以將整條記錄顯示出來,如一條服務單記錄在了兩個表中,A表中記錄了該服務單的服務時間、坐席名稱錄音地址等基本資訊,B表中記錄了該服務單的業務詳情,如保險單號,車牌號,保單日期等,當顯示該服務單時,要將A表與B表做內連線,因為少這兩表任何一個表,該服務單都不算完整,缺失的資訊會使業務上沒法繼續。

總結:可以將可使用左連線和右連線的兩個表理解成其中一個表的資訊明顯比另外一個表的資訊重要得多;使用內連線的兩個表理解成重要程度區別不太大的兩個表。

注意:看“重要”與否的標準要對於查詢結果的顯示而言。

相關推薦

sqlleft joinright joininner join區別以及適用場景

left join(左連線) 返回包括左表中的所有記錄和右表中連線欄位相等的記錄Table Aid name01 abc02 abTable Bidcnt013034Select A.id,A.name

js中的call()方法apply()和bind()方法的區別以及使用場景

在js中,所有的函式再被呼叫的時候都會預設傳入兩個引數,一個是this,還有一個是arguments。在預設情況下this都是指當前的呼叫函式的物件。但是有時候我們需要改變this的指向,也就是說使函式可以被其他物件來呼叫,那麼我們應該怎樣做呢?這時候我們就可以使用call,apply和bi

sqlleft joinright joininner join區別

行數 觀察 返回 join 填充 顯示 字段 left join inner left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄inner join(等值連接)

【轉】sqlleft joinright joininner join區別

left join(左聯接) 返回包括左表中的所有記錄和右表中聯結欄位相等的記錄  right join(右聯接) 返回包括右表中的所有記錄和左表中聯結欄位相等的記錄 inner join(等值連線) 只返回兩個表中聯結欄位相等的行 舉例如下:  -------------

Sqlleft join(左關聯)right join(右關聯)inner join(自關聯)的區別

首先來個圖例: left join(左聯接) 返回包括左表中的所有記錄和右表中聯結欄位相等的記錄  right join(右聯接) 返回包括右表中的所有記錄和左表中聯結欄位相等的記錄 inner join(等值連線) 只返回兩個表中聯結欄位相等的行 舉例如下: 

Linq to sqlleft join運用示例

creat extent ext mod .get then rom emp ase 示例一: var l= from a in cardsBll.GetCards() join b in usersBll.GetAllUsers() on a.Car

sqlleft join 後有多個條件時應該怎麼寫才能正確的顯示出想要的結果呢?

left join 後有多個條件時應該怎麼寫才能正確的顯示出想要的結果呢?來看下面兩個sql例子。Table aId name 01 A 02 B 04 C Table bId size 01

Oracle中PL/SQL常量和變數的定義遊標(游標)的使用

PL/SQL常量和變數的定義 變數的資料型別:char、varchar2、date、number、boolean、long 常量定義:isshow boolean :=true; 說明變數:說明變數名、資料型別和長度後用分號結束說明語句。例:e_name varchar2(20);

Socket請求和Http請求的各自特點區別適用場景 (轉)

網絡協議 strong 將不 控制 應用 如何 傳輸安全 socket實現 訪問協議 http://blog.csdn.net/hexinli/article/details/50500316 Socket實現服務器與客戶端之間的物理連接,並進行數據傳輸。主要有TCP/U

消息隊列服務Kafka揭秘:痛點優勢以及適用場景

cli 是什麽 占滿 事務 不同之處 消息系統 監控體系 流動 系列 摘要: 消息隊列Kafka是一個分布式的、高吞吐量、高可擴展性消息隊列服務,廣泛用於日誌收集、監控數據聚合、流式數據處理、在線和離線分析等,是大數據生態中不可或缺的產品之一,阿裏雲提供全托管服務,用戶無需

list與SetMap區別適用場景

適合 線程 可重復 set、map equals 註意 位置 tor span 1、List,Set都是繼承自Collection接口,Map則不是 2、List特點: 元素有放入順序,元素可重復 ,Set特點:元素無放入順序,元素不可重復,重復元素會覆蓋掉,(註意:元

11.1 js中級,資料型別資料儲存方式作用域記憶體空間的區別以及例識別。

一. 基本資料型別和引用資料型別的區別。     1.基本資料型別:基本資料型別就是簡單的操作值。     2.引用資料型別:就是把引用的地址賦給變數。   堆記憶體:     就是存放程式碼塊的,存放形式有兩種       1)物件以鍵值對的形式存放       2)引用資料型別的賦值,是把引用

畫素英寸,Dpi 三者的區別以及關係

Dpi(每平方英寸畫素數目):影象細節程度的度量 Dpi 代表每平方英寸上所含“點”的數目,它決定了一副影象在細節上到底有多細(儘管並不依賴於你的視覺感受)。但是,什麼是“點”? “點”是一個模糊不清的術語。點可以指的是畫素、畫筆的一“點”或者是一個油墨印跡。 當你置身

C++中過載覆蓋和隱藏的區別以及適用場景

一、過載、覆蓋和隱藏的區別 二、適用場景 1、過載:   適用於不同的資料型別都需要使用到的功能函式。以資料相加的函式為例,可以在同一個檔案內提供以下的過載函式以支援同樣的功能:   int add(int, int);/*2個整數相加*/   int add(int, int, int);/*3個整數相

希爾排序的Java實現效能分析以及適用場景

1.希爾排序的Java實現: 程式碼如下: package com.zm.testSort; /** *希爾排序的最優化 * @author zm */ public class ShellS

SPSS:T檢驗方差分析非參檢驗卡方檢驗的使用要求和適用場景

一、T檢驗 1.1 樣本均值比較T檢驗的使用前提 正態性;(單樣本、獨立樣本、配對樣本T檢驗都需要) 連續變數;(單樣本、獨立樣本、配對樣本T檢驗都需要) 獨立性;(獨立樣本T檢驗要求) 方差齊性;(獨立樣本T檢驗要求) 1.2 樣本均值比較T

mysqlipdo_mysql和mysql之間的區別以及選擇

這裡對在PHP應用開發過程中需要和Mysql資料庫互動時可用的選擇進行一個簡單介紹。 什麼是API? 一個應用程式介面(Application Programming Interface的縮寫),定義了類,方法,函式,變數等等一切 你的應用程式中為了完成特定任務而需要

java 常用集合list與SetMap區別適用場景總結

 轉載請備註出自於:http://blog.csdn.net/qq_22118507/article/details/51576319                list與Set、Map區別及適用場景 1、List,Set都是繼承自Collection介面,Map則不是 2

在Google Play 釋出內部Beta版開放Beta版有什麼區別以及怎樣與正式版共存

Google Play 裡的 APP 地址都是形如 https://play.google.com/store/apps/details?id=com.speedyplayer.player 這樣的

Nested Loops Join(巢狀連線) ,優化inner join的查詢速度

說明:最近找到了一個不錯的國外的部落格http://blogs.msdn.com/b/craigfr/,博主是Sql Server的開發人員,寫了很多Sql Server的內部原理性的文章,覺得非常有收穫。所以試著把他翻譯成中文,因為本人的英語和技術水平有限,難免會有錯誤,還請各位看官批評指教。 Nest