SQL EXISTS

基本上, EXISTS 是用來測試內查詢有沒有產生任何結果。如果有的話,系統就會執行外查詢中的 SQL。若是沒有的話,那整個 SQL 語句就不會產生任何結果。

EXISTS 的語法是:

SELECT "欄位1"
FROM "表格1"
WHERE EXISTS
(SELECT *
FROM "表格2"
WHERE [條件])

在內查詢中,我們並不一定要用 * 來選出所有的欄位。我們也可以選擇表格2中的任何欄位。這兩種做法最後的結果是一樣的。

來看一個例子。假設我們有以下的兩個表格:

Store_Information 表格
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

Geography 表格
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

而我們打入的 SQL 是:

SELECT SUM(Sales) FROM Store_Information
WHERE EXISTS
(SELECT * FROM Geography
WHERE region_name = 'West')

我們會得到以下的答案:

SUM(Sales)
2750

乍看之下,這個答案似乎不太正確,因為內查詢有包含一個 [region_name = 'West'] 的條件,可是最後的答案並沒有包含這個條件。實際上,這並沒有問題。在這個例子中,內查詢產生了超過一筆的資料,所以 EXISTS 的條件成立,所以外查詢被執行。而外查詢本身並沒有包含 [region_name = 'West'] 這個條件。

posted on 2008-04-29 14:11 破曉之陽 阅读(43) 评论(0)  编辑 收藏 所属分类: sql

导航

留言簿

随笔分类(55)

随笔档案(81)

文章分类(2)

文章档案(9)

收藏夹(102)

javascript庫

常去的网站

最新随笔

搜索

积分与排名

最新评论

阅读排行榜