精通MS-ACCESS SQL之基础篇(14)-Big Young
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-查询/SQL语句


精通MS-ACCESS SQL之基础篇(14)

发表时间:2017/12/4 16:29:50 评论(0) 浏览(3670)  评论 | 加入收藏 | 复制
   
摘 要:    使用ACCESS SQL的子查询。
正 文:

第十四节 使用ACCESS SQL的子查询

子查询是SQL查询中经常性使用的一个重要对象,所谓子查询就是一个嵌套在其它查询中的Select查询,换句话说,子查询是一个Select语句,它嵌套在SelectSelect...INTOInsert...INTODeleteUpdate语句中,或嵌套在另一个子查询中。

一、子查询的基本语法

可以通过三种语法形式来创建子查询:

comparison [ANY | ALL | SOME] (sqlstatement)

expression [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

子查询语句包含了以下部分:

部分

说明

Comparison

表达式和比较运算符,用于对表达式与子查询的结果进行比较。

Expression

表达式,用来搜索子查询的结果集。

Sqlstatement

Select 语句,遵循和任何其他 Select 语句一样的格式和规则。它必须用圆括号括起来。

需要说明与注解的是:可以在Select语句的字段列表中、在Where子句中或在HAVING子句中使用子查询来代替表达式。在子查询中,可以使用Select语句来提供一组要在WhereHAVING子句表达式中计算的一个或多个特定值。

二、第一种语法形式的子查询

通过同义的ANYSOME谓词,可以检索在主查询的记录中满足与子查询所检索出的任何记录进行比较的比较条件的记录。下面的示例通过结合子查询来从产品表中返回那些折扣高于25%出售的任何产品:

Select * FROM 产品

Where 列出价格 > ANY

(Select 单价 FROM 订单明细

Where 折扣 >= .25);

使用ALL谓词可以在主查询中只检索满足子查询中检索出的记录的比较条件的所有记录。如果将前面的示例中的ANY改为ALL,查询将只返回那些折扣高于以25%出售的所有产品单价的产品。它的限制性更强。

三、第二种形式的子查询

通过IN谓词可以只检索出在主查询的记录中作为子查询的一部分记录而包含相同值的记录。下面示例的SQL语句返回所有以25%或更高折扣出售的所有产品:

Select * FROM 产品

Where ID IN

(Select [产品 ID] FROM 订单明细

Where 折扣 >= .25);

相应地,可以使用NOT IN来仅检索出在主查询的记录中作为子查询的记录而不包含相同值的记录。

四、第三种形式的子查询

True/False比较条件中使用EXISTS谓词(带有可选的NOT保留字)可确定子查询是否返回任何记录。

也可以在子查询中使用表名的别名来引用在子查询外部的FROM子句中列出的表。以下示例返回薪水等于或高于具有同等职称的所有雇员平均薪水的雇员的姓名。Employees表的别名为"T1"

Select 姓氏, 名字, 职务, 工资

FROM 员工 AS T1

Where 工资 >= (Select Avg(工资)

FROM 员工

Where T1.职务 = 员工.职务)

ORDER BY 职务;

在前面的示例中,AS 保留字是可选的。

允许一些子查询用在交叉表查询中,特别是作为谓词(在Where子句中的谓词)。不允许将作为输出的子查询(在Select列表中)用在交叉表查询中。

五、实际数据库操作实例

还是以罗斯文商贸数据库为例来讲解,这里主查询结合子查询通过对“客户表与订单的联合查询列出在2006年第二季度下过订单的每个客户及联系人的信息。

Select (姓氏 & 名字) AS 姓名,
       公司,
       职务,
       业务电话
FROM 客户
Where ID
IN (Select [客户 ID]
    FROM 订单
    Where 订单日期 BETWEEN #2006-04-01# AND #2006-06-30#);

运行后如下图所示(图14-1)的效果。

14-1:子查询示例效果


Access软件网交流QQ群(群号:198465573)
 
 相关文章
精通MS-ACCESS SQL之基础篇(11)  【Big Young  2017/11/30】
精通MS-ACCESS SQL之基础篇(12)  【Big Young  2017/12/1】
精通MS-ACCESS SQL之基础篇(13)  【Big Young  2017/12/4】
精通MS-ACCESS SQL之基础篇(15)  【Big Young  2017/12/5】
精通MS-ACCESS SQL之基础篇(16)  【Big Young  2017/12/5】
精通MS-ACCESS SQL之基础篇(17)  【Big Young  2017/12/7】
常见问答
技术分类
相关资源
文章搜索
关于作者

Big Young

文章分类

文章存档

友情链接