inner join和left join之間的區(qū)別詳解
前言
關(guān)于inner join 與 left join 之間的區(qū)別,以前以為自己搞懂了,今天從前端取參數(shù)的時(shí)候發(fā)現(xiàn)不是預(yù)想中的結(jié)果,才知道問題出在inner join 上了。
需求是從數(shù)據(jù)庫(kù)查數(shù)據(jù),在前端以柱形圖的形式展現(xiàn)出來,查到的數(shù)據(jù)按行業(yè)分組,顯示每個(gè)行業(yè)的戶數(shù)及戶數(shù)占比,涉及到的字段有A表的用戶數(shù)、總用戶數(shù)和B表的行業(yè)名稱。本來是不管查不查的到數(shù)據(jù),在X軸都應(yīng)該顯示行業(yè)名稱的,結(jié)果是X、Y軸都沒有任何數(shù)據(jù)顯示。問題就是我用錯(cuò)了聯(lián)結(jié)方式。
一、sql的left join 、right join 、inner join之間的區(qū)別
left join(左聯(lián)接) 返回包括左表中的所有記錄和右表中聯(lián)結(jié)字段相等的記錄
right join(右聯(lián)接) 返回包括右表中的所有記錄和左表中聯(lián)結(jié)字段相等的記錄
inner join(等值連接) 只返回兩個(gè)表中聯(lián)結(jié)字段相等的行
舉例如下:
--------------------------------------------
表A記錄如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115
表B記錄如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
--------------------------------------------
1.left join
sql語(yǔ)句如下:
select * from A left join B on A.aID = B.bID
結(jié)果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL(所影響的行數(shù)為 5 行)
結(jié)果說明:
left join是以A表的記錄為基礎(chǔ)的,A可以看成左表,B可以看成右表,left join是以左表為準(zhǔn)的.
換句話說,左表(A)的記錄將會(huì)全部表示出來,而右表(B)只會(huì)顯示符合搜索條件的記錄(例子中為: A.aID = B.bID).
B表記錄不足的地方均為NULL.
--------------------------------------------
2.right join
sql語(yǔ)句如下:
select * from A right join B on A.aID = B.bID
結(jié)果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL 8 2006032408(所影響的行數(shù)為 5 行)
結(jié)果說明:
仔細(xì)觀察一下,就會(huì)發(fā)現(xiàn),和left join的結(jié)果剛好相反,這次是以右表(B)為基礎(chǔ)的,A表不足的地方用NULL填充.
--------------------------------------------
3.inner join
sql語(yǔ)句如下:
select * from A innerjoin B on A.aID = B.bID
結(jié)果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
結(jié)果說明:
很明顯,這里只顯示出了 A.aID = B.bID的記錄.這說明inner join并不以誰(shuí)為基礎(chǔ),它只顯示符合條件的記錄.
總結(jié)
到此這篇關(guān)于inner join和left join之間的區(qū)別詳解的文章就介紹到這了,更多相關(guān)inner join和left join區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 超詳細(xì)mysql left join,right join,inner join用法分析
- 數(shù)據(jù)庫(kù)Left join , Right Join, Inner Join 的相關(guān)內(nèi)容,非常實(shí)用
- 解析sql語(yǔ)句中l(wèi)eft_join、inner_join中的on與where的區(qū)別
- SQL之left join、right join、inner join的區(qū)別淺析
- SQL 外鏈接操作小結(jié) inner join left join right join
- inner join 內(nèi)聯(lián)與left join 左聯(lián)的實(shí)例代碼
相關(guān)文章
PLSQL?Developer13.0.4最新注冊(cè)碼和使用教程詳解
PL/SQL?Developer?13是一個(gè)集成開發(fā)環(huán)境,專門用于開發(fā)?Oracle?數(shù)據(jù)庫(kù)的存儲(chǔ)程序單元。這篇文章主要介紹了PLSQL?Developer13.0.4注冊(cè)和使用教程,需要的朋友可以參考下2021-12-12Oracle?EBS數(shù)據(jù)庫(kù)密碼復(fù)雜度設(shè)置圖文教程
選擇安全的密碼并實(shí)施良好的密碼策略是迄今為止防止基于密碼的安全威脅的極為重要的防御措施,下面這篇文章主要給大家介紹了關(guān)于Oracle?EBS數(shù)據(jù)庫(kù)密碼復(fù)雜度設(shè)置的相關(guān)資料,需要的朋友可以參考下2024-04-04oracle設(shè)置密碼復(fù)雜度及設(shè)置超時(shí)退出的功能
我們都知道密碼策略加固的參數(shù)一般包括密碼長(zhǎng)度、復(fù)雜度檢測(cè)、最大最小使用時(shí)間、過期警報(bào)時(shí)間、最大登錄失敗次數(shù)以及鎖定時(shí)間等設(shè)置,下面這篇文章主要給大家介紹了關(guān)于oracle設(shè)置密碼復(fù)雜度及設(shè)置超時(shí)退出功能的相關(guān)資料,需要的朋友可以參考下2022-06-06Oracle自我補(bǔ)充之trunc()函數(shù)的使用方法
TRUNC函數(shù)為指定元素而截去的日期值。下面通過本文給大家介紹Oracle自我補(bǔ)充之trunc()函數(shù)的使用方法,感興趣的朋友一起看看吧2017-06-06CentOS命令行下裝oracle 12c的方法(命令行模式安裝)
這篇文章主要介紹了CentOS命令行下裝oracle 12c的方法(命令行模式安裝),需要的朋友可以參考下2016-09-09oracle sql 去重復(fù)記錄不用distinct如何實(shí)現(xiàn)
本文將詳細(xì)介紹oracle sql 去重復(fù)記錄不用distinct如何實(shí)現(xiàn),需要了解的朋友可以參考下2012-11-11Oracle刪除字段中的空格、回車及指定字符的實(shí)例代碼
本文給大家分享Oracle刪除字段中的空格、回車及指定字符的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下2017-03-03oracle下巧用bulk collect實(shí)現(xiàn)cursor批量fetch的sql語(yǔ)句
oracle下巧用bulk collect實(shí)現(xiàn)cursor批量fetch的sql語(yǔ)句,使用oracel的朋友可以試試了2008-03-03VMware中l(wèi)inux環(huán)境下oracle安裝圖文教程(一)
剛剛接觸ORACLE的人來說,從那里學(xué),如何學(xué),有那些工具可以使用,應(yīng)該執(zhí)行什么操作,一定回感到無(wú)助。所以在學(xué)習(xí)使用ORACLE之前,首先來安裝一下ORACLE 10g,在來掌握其基本工具。俗話說的好:工欲善其事,必先利其器。作為一個(gè)新手,我們還是先在VMware虛擬機(jī)里安裝吧。2014-08-08解決線上Oracle連接耗時(shí)過長(zhǎng)的問題現(xiàn)象
這篇文章主要介紹了記一次線上Oracle連接耗時(shí)過長(zhǎng)的問題,本文通過問題定位分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12