SQL EXISTS



连接内查询和外查询有好几种方式,如 IN, >, <, 及 =。 EXISTS 也是其中一种方式。这一页我们将讨论 EXISTS 的用法。

基本上, EXISTS 是用来测试内查询有没有产生任何结果。如果有的话,系统就会执行外查询中的 SQL。若是没有的话,那整个 SQL 语句就不会产生任何结果。

EXISTS 的语法是:

SELECT "栏位1"
FROM "表格1"
WHERE EXISTS
(SELECT *
FROM "表格2"
WHERE "条件");

在内查询中,我们并不一定要用 * 来选出所有的栏位。我们也可以选择表格 2 中的任何栏位。这两种做法最后的结果是一样的。

来看一个例子。假设我们有以下的两个表格:

Store_Information 表格
 Store_Name  Sales  Txn_Date 
 Los Angeles 1500  05-Jan-1999 
 San Diego 250  07-Jan-1999 
 Los Angeles 300  08-Jan-1999 
 Boston 700  08-Jan-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'] 这个条件。

SQL UNION >>

本页最近于 2023年10月16日更新



Copyright © 2024   1keydata.com   All Rights Reserved.