惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
H
Help Net Security
量子位
The Cloudflare Blog
博客园 - Franky
博客园 - 聂微东
博客园 - 司徒正美
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
罗磊的独立博客
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
美团技术团队
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
MongoDB | Blog
MongoDB | Blog

博客园 - 疯一样的自由

gis学习资料 40种网页常用小技巧(JavaScript) - 疯一样的自由 - 博客园 网站头像: favicon.ico Javascript 动态菜单menu 利用 SQL Server Reporting Services 从应用程序生成用户友好的报表 Reporting Services API 报表服务中的编程 Oracle中Decode()函数使用技巧 使用Not Exists实现返回条件为一个值或空值的数据 蜡人张 Reporting service 文件列表输出到文件 - 疯一样的自由 - 博客园 删除XP中的保存用户和密码 Oracle错误解决:ora-12638:身份证明检索失败 ASP.NET Oracle数据库连接 - 疯一样的自由 - 博客园 Oracle数据操作和控制语言详解(SQL) Oracle function 集 oracle中的connect by 在sql server中实现 PL/SQL入门教程 SQL与Oracle对比
使用:EXISTS (Transact-SQL)
疯一样的自由 · 2006-11-30 · via 博客园 - 疯一样的自由

指定一个子查询,测试行是否存在。

Transact-SQL 语法约定

语法

参数

结果类型

结果值

示例

A. 在子查询中使用 NULL 仍然返回结果集

以下示例返回在子查询中指定了 NULL 的结果集,并且通过使用 EXISTS 仍求值为 TRUE。

复制代码
USE AdventureWorks ;
GO
SELECT DepartmentID, Name 
FROM HumanResources.Department 
WHERE EXISTS (SELECT NULL)
ORDER BY Name ASC ;

B. 比较使用 EXISTS 和 IN 的查询

以下示例比较了两个语义等同的查询。第一个查询使用 EXISTS,第二个查询使用 IN

复制代码
USE AdventureWorks ;
GO
SELECT DISTINCT c.FirstName, c.LastName, e.DepartmentID
FROM Person.Contact c JOIN HumanResources.Employee e
ON e.ContactID = c.ContactID WHERE EXISTS
(SELECT *
FROM HumanResources.Department d
WHERE e.DepartmentID = d.DepartmentID
AND d.Name = 'Purchasing') ;
GO

下面的查询使用 IN

复制代码
USE AdventureWorks ;
GO
SELECT DISTINCT c.FirstName, c.LastName, e.DepartmentID
FROM Person.Contact c JOIN HumanResources.Employee e
ON e.ContactID = c.ContactID WHERE DepartmentID IN
(SELECT DepartmentID 
FROM HumanResources.Department d
WHERE d.Name = 'Purchasing') ;
GO

以下是其中任一查询的结果集。

复制代码
FirstName                 LastName                  DepartmentID
------------------------- ------------------------- ------------
Annette                   Hill                      5           
Arvind                    Rao                       5           
Ben                       Miller                    5           
Eric                      Kurjan                    5           
Erin                      Hagins                    5           
Frank                     Pellow                    5           
Fukiko                    Ogisu                     5           
Gordon                    Hee                       5           
Linda                     Meisner                   5           
Mikael                    Sandberg                  5           
Reinout                   Hillmann                  5           
Sheela                    Word                      5           (12 row(s) affected)

C. 比较使用 EXISTS 和 = ANY 的查询

以下示例显示两个查找其名称与供应商名称相同的商店的查询。第一个查询使用 EXISTS,第二个查询使用 = ANY

复制代码
USE AdventureWorks ;
GO
SELECT DISTINCT s.Name
FROM Sales.Store s 
WHERE EXISTS
(SELECT *
FROM Purchasing.Vendor v
WHERE s.Name = v.Name) ;
GO

下面的查询使用 = ANY

复制代码
USE AdventureWorks ;
GO
SELECT DISTINCT s.Name
FROM Sales.Store s 
WHERE s.Name = ANY
(SELECT v.Name
FROM Purchasing.Vendor v ) ;
GO

D. 比较使用 EXISTS 和 IN 的查询

以下示例显示查找以 P 开头的部门员工的查询。

复制代码
USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName, e.Title
FROM Person.Contact c JOIN HumanResources.Employee e
ON e.ContactID = c.ContactID WHERE EXISTS
(SELECT *
FROM HumanResources.Department d
WHERE e.DepartmentID = d.DepartmentID
AND d.Name LIKE 'P%');
GO

下面的查询使用 IN

复制代码
USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName, e.Title
FROM Person.Contact c JOIN HumanResources.Employee e
ON e.ContactID = c.ContactID WHERE DepartmentID IN
(SELECT DepartmentID
FROM HumanResources.Department
WHERE Name LIKE 'P%');
GO

E. 使用 NOT EXISTS

NOT EXISTS 的作用与 EXISTS 正相反。如果子查询没有返回行,则满足 NOT EXISTS 中的 WHERE 子句。以下示例查找不在部门中且姓名以 P 开头的员工。

复制代码
USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName, e.Title
FROM Person.Contact c JOIN HumanResources.Employee e
ON e.ContactID = c.ContactID WHERE NOT EXISTS
(SELECT *
FROM HumanResources.Department d
WHERE e.DepartmentID = d.DepartmentID
AND d.Name LIKE 'P%')
ORDER BY LastName, FirstName
GO

下面是结果集: 

复制代码
FirstName                      LastName                       Title                         
------------------------------ ------------------------------ ------------
Syed                           Abbas                          Pacific Sales Manager         
Hazem                          Abolrous                       Quality Assurance Manager     
Humberto                       Acevedo                        Application Specialist        
Pilar                          Ackerman                       Shipping & Receiving Superviso
François                       Ajenstat                       Database Administrator        
Amy                            Alberts                        European Sales Manager        
Sean                           Alexander                      Quality Assurance Technician  
Pamela                         Ansman-Wolfe                   Sales Representative          
Zainal                         Arifin                         Document Control Manager      
David                          Barber                         Assistant to CFO              
Paula                          Barreto de Mattos              Human Resources Manager       
Shai                           Bassli                         Facilities Manager            
Wanida                         Benshoof                       Marketing Assistant           
Karen                          Berg                           Application Specialist        
Karen                          Berge                          Document Control Assistant    
Andreas                        Berglund                       Quality Assurance Technician  
Matthias                       Berndt                         Shipping & Receiving Clerk    
Jo                             Berry                          Janitor                       
Jimmy                          Bischoff                       Stocker                       
Michael                        Blythe                         Sales Representative          
David                          Bradley                        Marketing Manager             
Kevin                          Brown                          Marketing Assistant           
David                          Campbell                       Sales Representative          
Jason                          Carlson                        Information Services Manager  
Fernando                       Caro                           Sales Representative          
Sean                           Chai                           Document Control Assistant    
Sootha                         Charncherngkha                 Quality Assurance Technician  
Hao                            Chen                           HR Administrative Assistant   
Kevin                          Chrisulis                      Network Administrator         
Pat                            Coleman                        Janitor                       
Stephanie                      Conroy                         Network Manager               
Debra                          Core                           Application Specialist        
Ovidiu                         Crãcium                        Sr. Tool Designer             
Grant                          Culbertson                     HR Administrative Assistant   
Mary                           Dempsey                        Marketing Assistant
Thierry                        D'Hers                         Tool Designer                 
Terri                          Duffy                          VP Engineering                
Susan                          Eaton                          Stocker                       
Terry                          Eminhizer                      Marketing Specialist          
Gail                           Erickson                       Design Engineer               
Janice                         Galvin                         Tool Designer                 
Mary                           Gibson                         Marketing Specialist          
Jossef                         Goldberg                       Design Engineer               
Sariya                         Harnpadoungsataya              Marketing Specialist          
Mark                           Harrington                     Quality Assurance Technician  
Magnus                         Hedlund                        Facilities Assistant          
Shu                            Ito                            Sales Representative          
Stephen                        Jiang                          North American Sales Manager  
Willis                         Johnson                        Recruiter                     
Brannon                        Jones                          Finance Manager               
Tengiz                         Kharatishvili                  Control Specialist            
Christian                      Kleinerman                     Maintenance Supervisor        
Vamsi                          Kuppa                          Shipping & Receiving Clerk    
David                          Liu                            Accounts Manager              
Vidur                          Luthra                         Recruiter                     
Stuart                         Macrae                         Janitor                       
Diane                          Margheim                       Research & Development Enginee
Mindy                          Martin                         Benefits Specialist           
Gigi                           Matthew                        Research & Development Enginee
Tete                           Mensa-Annan                    Sales Representative          
Ramesh                         Meyyappan                      Application Specialist        
Dylan                          Miller                         Research & Development Manager
Linda                          Mitchell                       Sales Representative          
Barbara                        Moreland                       Accountant                    
Laura                          Norman                         Chief Financial Officer       
Chris                          Norred                         Control Specialist            
Jae                            Pak                            Sales Representative          
Wanda                          Parks                          Janitor                       
Deborah                        Poe                            Accounts Receivable Specialist
Kim                            Ralls                          Stocker                       
Tsvi                           Reiter                         Sales Representative          
Sharon                         Salavaria                      Design Engineer               
Ken                            Sanchez                        Chief Executive Officer       
Jos?                          Saraiva                        Sales Representative          
Mike                           Seamans                        Accountant                    
Ashvini                        Sharma                         Network Administrator         
Janet                          Sheperdigian                   Accounts Payable Specialist   
Candy                          Spoon                          Accounts Receivable Specialist
Michael                        Sullivan                       Sr. Design Engineer           
Dragan                         Tomic                          Accounts Payable Specialist   
Lynn                           Tsoflias                       Sales Representative          
Rachel                         Valdez                         Sales Representative          
Garrett                        Vargar                         Sales Representative          
Ranjit                         Varkey Chudukatil              Sales Representative          
Bryan                          Walton                         Accounts Receivable Specialist
Jian Shuo                      Wang                           Engineering Manager           
Brian                          Welcker                        VP Sales                      
Jill                           Williams                       Marketing Specialist          
Dan                            Wilson                         Database Administrator        
John                           Wood                           Marketing Specialist          
Peng                           Wu                             Quality Assurance Supervisor  
(91 row(s) affected)

posted @ 2006-11-30 10:20  疯一样的自由  阅读(1462)  评论()    收藏  举报