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

SQL循序漸進(19)DISTINCT和排除復制

編輯:關於SqlServer

DISTINCT和排除復制

假如你象列出所有買過古董的ID和名字,很明顯,你可能會將所有的顧客都列出來而沒有考慮有些顧客是買過多講古董的,所以這時你會發現有些數據是重復的。這就意味著你需要通知SQL來排除復制的行,而不管這個顧客買過多少個古董只需要列出一次即可。為了實現這個目的,你可以使用DISTINCT關鍵字。

首先我們需要為AntiqueOwners表來一個equijoin以得到顧客的LastName和First的詳細數據。但是,你要考慮到Antiques表中的SellerID列是AntiqueOwners表的一個外碼,所以顧客只能在AntiqueOwners表列出ID和名字的行才被列出。我們還想在列的數據中排除SellerID復制的發生,所以我們要在發生重復的列上使用DISTINCT 。

為了防止復制的發生,我們還想將LastName以字母順序排列,然後在按字母順序排列FirstName最後排列OwnerID,因此我們還必須使用ORDER BY子句,具體語句如下:

SELECT DISTINCT SELLERID, OWNERLASTNAME, OWNERFIRSTNAME

FROM ANTIQUES, ANTIQUEOWNERS

WHERE SELLERID = OWNERID

ORDER BY OWNERLASTNAME, OWNERFIRSTNAME, OWNERID

在這個例子中,因為每個人都買都一個件古董,所以我們將Lasname以字母順序列出所有的古董擁有者。

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