SQL SERVER2000教程-第五章 处理数据 第十一节 子查询
2007-10-01 13:47
381 查看
![](http://img1.51cto.com/attachment/200904/200904221240401363259.jpg)
是在其他查询结果的基础上提供一种自然而有效的方式表示WHERE子句的条件。
子查询是一个SELECT语句,它定义在另一个SELECT、INSERT、UPDATE或DELETE语句中或定义在另一个子查询中。
子查询会受到一定限制规则。这些规则为:
1)子查询的选择列表中不能包括文本或图像数据类型。
2)由未修改的比较运算符(不跟有ANY或ALL关键字的一种运算符)引入的子查询不能包括GROUP BY和HAVING子句,因
为这些子查询必须返回单一值。
3)包含GROUP BY子句的子查询不能使用DISTINCT关键字。
4)由比较运算符引入的子查询的选择列表中只能包含一个表达式或一个列名。
5)子查询不能内部地处理它们自己的结果,因为它们不能包含COMPUTE子句、ORDER BY子句或INTO关键字。因为系统
首先通过排序结果消除重复的记录,所以可选的DISTINCT关键字可对不包含GROUP BY 子句的子查询的结果进行有
效排序。
6)使用EXISTS的子查询的选择列表规则等同于那些标准选择列表规则,这是因为使用EXISTS的子查询构成了一个存在
性测试,并且它返回TURE(真)或FALSE(假)值而非数据值。根据惯例,使用EXISTS的子查询的选择列表由有星
号(*)构成而不是单个列名。不要指定多个列。
实例:
a)子查询只返回一行和一列。
Use pubs
go
Select title from titles where pub_id=(
select pub_id from publishers where pub_name='Binnet & Hardley')
b)可以使用 IN运算符来操作返回一列或多行的子查询。
Select pub_name from publishers where pub_id in (select pub_id from titles where type='business')
c)可以返回多行或多列的子查询(事实上是所有的列)使用EXISTS关键字。下面的例子返回与上例相同的结果集:
Select pub_name from publishers p where exists
(select * from titles t where p.pub_id=t.pub_id and type='business')
![](http://img1.51cto.com/attachment/200904/200904221240401363259.jpg)
相关文章推荐
- SQL SERVER2000教程-第五章 处理数据 第十一节 子查询
- SQL SERVER2000教程-第五章 处理数据 第五节 函数
- SQL SERVER2000教程-第五章 处理数据 第十四节 数据导入导出
- SQL SERVER2000教程-第五章 处理数据 第十五节 使用TRUNCATE TABLE快速删除表中的所有数据
- SQL SERVER2000教程-第五章 处理数据 第二十一节 使用CASE语句、SUM函数、AVG函数进行综合数据统计
- SQL SERVER2000教程-第五章 处理数据 第十八节 用BEGIN…END语句进行数据统计
- SQL SERVER2000教程-第五章 处理数据 第一节 Transact-SQL语言介绍
- SQL SERVER2000教程-第五章 处理数据 第七节 使用COMPUTE和COMPUTE BY对数据进行汇总
- SQL SERVER2000教程-第五章 处理数据 第十六节 使用CHARINDEX函数代替Like进行数据查询
- SQL SERVER2000教程-第五章 处理数据 第二十二节 利用UNION对多条SQL查询语句合并生成表
- SQL SERVER2000教程-第五章 处理数据 第十九节 使用DECLARE 语句进行数据统计
- SQL SERVER2000教程-第五章 处理数据 第八节 操作符
- SQL SERVER2000教程-第五章 处理数据 第十七节 使用CASE函数格式进行条件查询
- SQL SERVER2000教程-第五章 处理数据 第二十三节 将具有相同字段的记录删除,只留下一条。
- SQL SERVER2000教程-第五章 处理数据 第二十节 使用GOTO进行循环求和
- SQL SERVER2000教程-第五章 处理数据 第二节 检索数据
- SQL SERVER2000教程-第五章 处理数据 第九节 联接
- SQL SERVER2000教程-第五章 处理数据 第二十四节 使用table数据类型变量获得临时表
- SQL SERVER2000教程-第五章 处理数据 第七节 使用COMPUTE和COMPUTE BY对数据进行汇总
- SQL SERVER2000教程-第五章 处理数据 第二十一节 使用CASE语句、SUM函数、AVG函数进行综合数据统计