EXISTS 和 ALL
EXISTS使用了一個子查詢作為條件,只有當子查詢返回行的時候這個條件才為真,如果子查詢不返回任何的行條件就為假。如果商店在處理Chair的時候,有個顧客想看看所有擁有者的列表,就可以使用EXSIST,語句如下:
SELECT OWNERFIRSTNAME, OWNERLASTNAME
FROM ANTIQUEOWNERS
WHERE EXISTS
(SELECT *
FROM ANTIQUES
WHERE ITEM = 'Chair');
如果在Antiques列中有Chair,那麼子查詢就會返回一行或者多行,就使得EXISTS子句為真,然後讓SQL列出擁有者來。如果沒有搜索到Chair,則沒有行被返回,條件就為假。
ALL是另外一個不尋常的關鍵字,因為ALL查詢通常可以用不同的方法來進行,並且可能是一種更為簡單的方法。舉個例子來說明吧:
SELECT BUYERID, ITEM
FROM ANTIQUES
WHERE PRICE >= ALL
(SELECT PRICE
FROM ANTIQUES);
上面這條語句將返回最高價格的Item以及它的買方。子查詢返回了Antiques表中的所有的Price列,而外層的查詢逐行查詢Antiques表,並且如果它的Price大於等於(或者ALL)列中的Prices,它就會被列出,它就是最好價格的Item。這裡必須使用">="的原因是最高價格的Item要等於列表中的最高價格,因為這個Item在Price列中。
文