有时,您可能希望将一个查询的结果用作其他查询中的字段或用作查询字段的条件。例如,假设您想查看每类产品的订单之间的时间间隔。要创建查询以显示此时间间隔,需要将同类产品的各个订单日期进行相互比较。比较这些订单日期时也需要查询。通过使用子查询 (子查询:在另一个选择查询或动作查询内的 SQL Select 语句。),可以将此查询嵌入到主查询中。
在 SQL 视图 (SQL 视图:用于显示当前查询的 SQL 语句或用于创建 SQL 特有查询(联合查询、传递查询或数据定义查询)的窗口。在设计视图中创建查询时,Access 会在 SQL 视图中构建 SQL 的等价查询。)中,可以用表达式 (表达式:算术或逻辑运算符、常数、函数和字段名称、控件和属性的任意组合,计算结果为单个值。表达式可执行计算、操作字符或测试数据。)或结构化查询语言 (SQL) 语句编写子查询。
本文内容
将查询结果用作其他查询中的字段
可以将子查询用作字段别名 (别名 (SQL):表达式中表或字段的可选名称。通常用来缩短表或字段名以便以后在代码中引用,这样可防止可能出现的模糊引用或者在查询输出中提供更具描述性的名称。)。如果您希望将子查询结果用作主查询中的字段,则可以使用子查询作为字段别名。
注释 用作字段别名的子查询不能返回多个字段。
可以使用子查询字段别名显示依赖于当前行中的其他值的值,如果不使用子查询,则无法做到这一点。例如,让我们回到您要查看每类产品的订单之间的时间间隔的示例。要确定此时间间隔,您需要将同类产品的各个订单日期进行相互比较。通过使用 Northwind 2007 模板,可以创建显示此信息的查询。
演示如何设置 Northwind 2007
- 单击“Office 按钮”,然后单击“新建”。
- 在左窗格的“模板类别”下,单击“本地模板”。
- 在“本地模板”下,单击“Northwind 2007”,然后单击“创建”。
- 按照“罗斯文贸易”页(在“启动屏幕”对象选项卡上)上的说明打开数据库,然后关闭“登录对话框”窗口。
- 在“创建”选项卡上的“其他”组中,单击“查询设计”。
- 在“显示表”对话框中,单击“查询”选项卡,然后双击“产品订单数”。
- 关闭“显示表”对话框。
- 双击“产品 ID”字段和“订单日期”字段,以将这些字段添加到查询设计网格。
- 在该网格的“产品 ID”列的“排序”行中,选择“升序”。
- 在该网格的“订单日期”列的“排序”行中,选择“降序”。
- 在该网格的第三列中,右键单击“字段”行,然后单击快捷菜单上的“显示比例”。
- 在“显示比例”对话框中,键入或粘贴以下表达式:
Prior Date: (Select MAX([Order Date])
FROM [Product orders] AS [Old orders]
Where [Old orders