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以字母順序列出所有的古董擁有者。