熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

SQL實戰新手入門:左聯接(LEFT OUTER JOIN)

2013-11-13 12:43:51  來源: SQL語言 

   左聯接(LEFT OUTER JOIN)

  雖然先前沒有說明但總有兩個表相互聯接並符合我們人類的觀察方式我們可以將其想象成在左邊或者在右邊的聯接而無須考慮數據庫將其保存在何處以及如何保存表中的數據OUTERJOIN的想法正是來源於這種觀念例如LEFTOUTER JOIN用於這樣的情形我們想看到左表中感興趣的全部記錄列表以及右表中的一些項所具有的額外特性如果右表中沒有對應數據行則對於左表中不匹配的行在右側表中填充NULL值描述了LEFT OUTER JOIN的概念

  例如假定列出書櫃中所有的書架位置並列出書櫃的書架中已經具有的圖書但是現在需要列出所有圖書甚至包括哪些還沒有放置到書架中的圖書由於所有圖書在書櫃中都已經各自具有一個正確的位置因此在BOOKS表中必須創建不匹配的行下面將創建一個BK_ID=的新行

  INSERT INTO books (bk_id bk_title)

  VALUES (LEFT JOIN EXAMPLE

  其余的列將被填充為默認值NULL

  現在可以使用之前曾用過的關於圖書放置位置的查詢只需要將JOIN類型從INNER JOIN修改為LEFT OUTER JOIN:

  SELECT

  bk_title

   loc_shelf

  loc_position_left

  FROM books LEFT OUTER JOIN location

  ON locationfk_bk_loc = booksbk_id

  該查詢從BOOKS表中請求所有記錄另外還包含LOCATION表中不匹配的數據行剛才新插入的記錄(BOOKS表中的最後一條記錄)在書架上並沒有對應的位置因此在返回的結果集中將它的位置信息填充為NULL值如果以INNER JOIN方式來運行該查詢由於第條記錄沒有匹配的項因此INNER JOIN將簡單地將其排除在結果集之外列出了該LEFT OUTERJOIN查詢的結果

  表 LEFT OUTER JOIN查詢返回的結果

  現在至少我們知道了哪些圖書還沒有放置到書櫃中如果使用INNER JOIN的話該圖書的記錄就不會顯示出來

       返回目錄SQL實戰新手入門

       編輯推薦

       Oracle索引技術

       高性能MySQL

       數據倉庫與數據挖掘培訓視頻教程


From:http://tw.wingwit.com/Article/program/SQL/201311/16471.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.