更多的子查詢
我們可以使用在SELECT查詢語句中再包括一個SELECT子查詢語句。舉個例子吧,首先我們列除所有購買貴重物品的顧客,貴重物品的標准是比所有賣出的物品價錢的平均值多100元的物品。具體語句如下:
SELECT OWNERID
FROM ANTIQUES
WHERE PRICE >
(SELECT AVG(PRICE) + 100
FROM ANTIQUES);
上面子查詢語句是計算物品的平均價格再加100元,並搜索所有在ANTIQUES表中PRICE大於這個數值的OWNERID。這裡你可以使用DISTINCT OWNERID來排除復制的現象。
下面的語句列出了所有在AntiqueOwners表中的有買過物品的人的LastName:
SELECT OWNERLASTNAME
FROM ANTIQUEOWNERS
WHERE OWNERID =
(SELECT DISTINCT BUYERID
FROM ANTIQUES);
這個子查詢返回了一系列的顧客,當且僅當物品擁有者的ID出現在子查詢的列表中,古董的擁有者的LastName才會顯示出來。
為了更新這個例子,我們假設有一個買過bookcase的顧客,他的FirstName在數據庫中出錯了,應該為John:
UPDATE ANTIQUEOWNERS
SET OWNERFIRSTNAME = 'John'
WHERE OWNERID =
(SELECT BUYERID
FROM ANTIQUES
WHERE ITEM = 'Bookcase');
上面的語句中的子查詢首先搜索買過bookcase的顧客的BuyerID,然後在外層的查詢中來更新他的FirstName。
文