<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          前字節(jié)員工爆料稱,在新入職公司進行背調(diào)時,竟然背調(diào)出了他在字節(jié)跳動公司的N+1補償和最后一任領(lǐng)導的名字

          共 3207字,需瀏覽 7分鐘

           ·

          2024-04-02 22:52

          昨天摸魚的時候發(fā)現(xiàn)一個挺離譜的“爆料”,個人對這事得真實性存疑:某個程序員在新公司入職的背景調(diào)查過程中,出人意料地查到了他在字節(jié)跳動時期的N+1補償詳情以及上一任領(lǐng)導的姓名,并且調(diào)查系統(tǒng)明確標記了他是通過協(xié)商離職的方式離開的。

          按照正常的理解,背調(diào)最主要的目的就是確認真實性,也就是驗證應聘者提供的信息是否真實可靠,包括但不限于工作經(jīng)歷、教育背景、技能和資質(zhì)證書等。

          至于離職的原因都被挖掘出來,或許涉及到侵犯個人隱私了,有點離譜。


          以下是今天的SQL干貨

          今天主要通過圖形的方式,給大家講解JOIN ON在數(shù)據(jù)庫中執(zhí)行原理。

          測試環(huán)境

          SQL Server 2017

          測試樣表

          我們新建兩張測試表Customers和Orders,表結(jié)構(gòu)如下:

          本文主要講解JOIN ON在數(shù)據(jù)庫中是怎么執(zhí)行的。

          測試環(huán)境

          SQL Server 2017

          測試樣表

          我們新建兩張測試表Customers和Orders,表結(jié)構(gòu)如下:

          Customers
          Orders

          要求:查詢每個客戶的訂單數(shù)量

          我們先直接寫出查詢語句:

          SELECT a.CustomerName,Count(OrderID) Nums
          FROM Customers a
          LEFT JOIN Orders b ON a.CustomerID=b.CustomerID
          GROUP BY a.CustomerName

          結(jié)果如下:

          問:這個結(jié)果是怎么來的呢?

          要搞清楚這個結(jié)果是怎么來的,我們需要先知道一個概念:笛卡爾積。

          1、執(zhí)行笛卡爾積(交叉聯(lián)接)

          什么是笛卡爾積?

          笛卡爾乘積是指在數(shù)學中,兩個集合X和Y的笛卡爾積,表示為X×Y,第一個對象是X的成員而第二個對象是Y的所有可能有序?qū)Φ钠渲幸粋€成員。具體如下圖:

          而我們在進行SQL的表關(guān)聯(lián)時,JOIN的第一步就是生成笛卡爾積。我們上面的代碼

          ... Customers a LEFT JOIN  Orders b ...

          最開始是在數(shù)據(jù)庫中生成了一張笛卡爾積的虛表T1,T1里面的數(shù)量正是兩個表(Customers和Orders)數(shù)量的乘積9條(3 × 3),我們可以使用如下代碼獲得笛卡爾積:

          SELECT 
          B.CustomerID,
          B.CustomerName,
          A.OrderID,
          A.CustomerID
          FROM Orders A
          CROSS JOIN Customers B

          查詢出來的數(shù)據(jù)如下:

          虛表T1

          2、執(zhí)行過濾篩選

          當JOIN將兩個表生成笛卡爾積的虛表T1之后,隨后的ON開始執(zhí)行篩選功能,ON后面的條件就是指符合條件的返回結(jié)果TRUE,不符合條件的返回結(jié)果FALSE,以及未知情況UNKNOWN。

          而我們上面的代碼中的ON的條件是這樣寫的:

          ... a.CustomerID=b.CustomerID ...

          意思就是取a(表Customers的別名)和b(表Orders的別名)中CustomerID相等的結(jié)果。根據(jù)這個篩選條件,虛表T1中可以生成相應邏輯值,如下圖:

          ON篩選的邏輯結(jié)果表

          從上面我們可以看到完全滿足條件(Logic Value的值為TRUE)的只有兩條記錄,數(shù)據(jù)庫會將這些結(jié)果插入到虛表T2,進行下一步的操作準備。

          虛表T2

          3、添加外部行

          這一步只在外聯(lián)接(OUT JOIN)中才會發(fā)生。對于外聯(lián)接,通過為其指定一種聯(lián)接方式(LEFT,RIGHT或FULL),就把一個或兩個輸入表標記為保留表。

          把表標記為保留表,即表示希望返回該表的所有行,即使ON過濾了一些行。

          左連接(LEFT OUT JOIN)是把左邊的表作為保留表,右連接(RIGHT OUT JOIN)是把右邊的表作為保留表,全連接(FULL OUT JOIN)則是把兩個表都作為保留表。(我們在書寫時,通常會省略掉OUT)

          在執(zhí)行完ON的篩選后,我們根據(jù)寫法來添加這些保留表中記錄。

          我們上面的代碼使用的是LEFT JOIN,所以我們需要將左表(注:LEFT JOIN 左邊的表)Customers表作為保留表。

          在ON篩選完后,我們發(fā)現(xiàn)Customers表中CustomerID為1的沒有在T2中,我們需要將這條記錄的相關(guān)信息添加到T2中生成虛表T3,并且將Order表中的所有數(shù)據(jù)置為NULL,因為他們(指表Orders中的兩列)不屬于保留表,不是我們需要保留的數(shù)據(jù)。這樣匯總后虛表T3中的數(shù)據(jù)如下:

          虛表T3

          這樣當我們再對表Orders中的OrderID計數(shù)時,CustomerID為1的客戶因為沒有訂單,返回的結(jié)果將為0,而CustomersID為2,3的客戶都有一個訂單,返回的結(jié)果將為1。

          至此整個表關(guān)聯(lián)環(huán)節(jié)就執(zhí)行完成了。

          參考文獻

          《Microsoft SQL Server 2008技術(shù)內(nèi)幕:T-SQL查詢》

          以上就是JOIN在數(shù)據(jù)庫中執(zhí)行的相關(guān)內(nèi)容,如有不明白的地方,歡迎在底下留言。

             
          最后給大家分享我寫的SQL兩件套:《SQL基礎知識第二版》《SQL高級知識第二版》的PDF電子版。里面有各個語法的解釋、大量的實例講解和批注等等,非常通俗易懂,方便大家跟著一起來實操。

          有需要的可以下載學習,只需要在下面的公眾號「數(shù)據(jù)前線(非本號),后臺回復關(guān)鍵字:SQL,就行

          數(shù)據(jù)前線

                
          后臺回復關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨
          后臺回復關(guān)鍵字:進群,帶你進入高手如云的交流群。
                 

          推薦閱讀

                   

          文章有幫助的話,點個贊或在看吧。

          謝謝支持

          瀏覽 48
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文字幕精品久久久久久久直播 | 日B视频在线观看 | 日逼3p视频 | 欧美九九九在线观看 | 男人天堂综合网 |