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

SQL實戰新手入門:自聯接-在表內部查找答案

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

   自聯接在表內部查找答案

  這是一個新穎的概念將一個表聯接到自身為什麼要這麼做呢?讀者可能會感到疑惑表中不是已經包含所需的信息了嗎?這既可以說也可以說例如嘗試這樣的查詢請按照添加到數據庫中的順序列出在同一年出版的圖書列表

  可以使用一個自聯接查詢來回答這一問題

  SELECT

  fstbk_id

   fstbk_title

   sndbk_id

   sndbk_title

  FROM books fst JOIN books snd

  ON fstbk_published_year = sndbk_published_year

  WHERE fstbk_id < sndbk_id;

  bk_id bk_title bk_id bk_title

  

   A La Recherche du Temps Perdu Steppenwolf

   Letters From Earth A Short History of Nearly…

  ( row(s) affected)

  首先請注意已經為該表定義了別名否則在該語句的其他部分中數據庫引擎將無法區分所引用的是哪一個表在之前的查詢中使用別名是一個最佳實踐但在自聯接中使用別名是必需的接下來根據出版的年份將該表聯接到自身然後再定義篩選條件指出我們需要同一年出版的不同的圖書記錄(否則將從每一個表中獲取相同的圖書)

  盡管在自聯接中將表聯接到自身但必須記住的重要內容是這時處理的依然是該表的兩個實例對於所有的操作和用途兩者是兩個彼此獨立的表在一個查詢中對於一個表可以引用自身多少次並沒有明確的限制

  盡管上面的查詢結果也可以使用子查詢和GROUP BY子句來獲得但卻難以在同一行中列出兩本圖書的名稱

  自聯接並不是一種特殊類型的聯接但它很好地演示了SQL語法所提供的靈活性

       返回目錄SQL實戰新手入門

       編輯推薦

       Oracle索引技術

       高性能MySQL

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


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