归墟
业精于勤,荒于嬉!

EXISTS
在上一页中,我们用 IN 来连接内查询和外查询。另外有数个方式,例如 >, <, 及 =,
都可以用来连接内查询和外查询。 EXISTS 也是其中一种方式。基本上, EXISTS 是用来测试内查询有没有产生任何结果。如果有的话,系统就会执行外查询中的 SQL。若是没有的话,那整个 SQL 语句就不会产生任何结果。
EXISTS 的语法是:
SELECT "栏位1"FROM "表格1"WHERE EXISTS(SELECT *FROM "表格2"  WHERE [条件])
在内查询中,我们并不一定要用 * 来选出所有的栏位。我们也可以选择表格 中的任何栏
位。这两种做法最后的结果是一样的。
来看一个例子。假设我们有以下的两个表格:
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 2012-06-12 10:32  Crazy-H  阅读(151)  评论(0编辑  收藏  举报