程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL循序漸進(23)UNION 和 外部連接

SQL循序漸進(23)UNION 和 外部連接

編輯:關於SqlServer

UNION 和 外部連接

有些時候,你可以想一起看多個查詢的結果、組合它們的輸出,你可以使用UNION關鍵字。為了合並以下兩個查詢的輸出:顯示所有買方的ID和已經有定貨的顧客,你可以使用以下語句:

SELECT BUYERID

FROM ANTIQUEOWNERS

UNION

SELECT OWNERID

FROM ORDERS;

這裡要注意SQL要求SELECT的列表必須匹配,即列於數據類型匹配。在本例子中,BuyerID 和OwnerID都是相同的數據類型,同為Interger(整型)。同時還有一提的是,SQL但使用UNION的使用會進行自動復制排除。而在單一的查詢中,你就必須使用DISTINCT。

Outer Join(外部連接)通常是在JOIN查詢被聯合,而行沒有包括到JOIN中的時候使用,特別是在常量文本"flags"被包括的時候尤為有用。下面我們看看這個查詢先:

SELECT OWNERID, 'is in both Orders & Antiques'

FROM ORDERS, ANTIQUES

WHERE OWNERID = BUYERID

UNION

SELECT BUYERID, 'is in Antiques only'

FROM ANTIQUES

WHERE BUYERID NOT IN


(SELECT OWNERID

FROM ORDERS);

第一個查詢做了一個連接以列出兩個表中的每個owener,並且在ID後面放置一個標記線來重復引用。這個UNION合並了這個列表以及以下第二個的列表。第二個列表是列出不是在Orders 表的ID,這樣就產生了在JOIN查詢之外的ID列表,它是利用引用標簽列出的。這可能是一種最容易的方法來產生這個列表。

這個概念對於主鍵跟外碼有關的狀況是很有用的,但是有些主鍵的外碼值是NULL。比如,在一個表中,主鍵是salesperson,而在其它的表中主鍵是customers,並且它們的salesperson列在相同的行。然而,如果salesperson沒有customers的時候,這個人的名字就不會出現在customer表中。如果所有salespersons的列表要顯示出來,那麼就要外部連接了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved