Access 2003完整教程:指定搜索条件 (ADP)

注释本主题中的信息仅适用于 Microsoft Access 项目 (.adp)。

背景信息

通过指定搜索条件,可以指定显示在查询中的数据行。例如,如果要查询“employee”表,可以指定只向查找在某个地区工作的雇员。

可以使用表达式指定搜索条件。最常见的表达式由一个运算符和一个搜索值构成。例如,若要查找特定销售区域的雇员,可以为region列指定以下搜索条件:

='UK'

注释如果使用的是多个表,“查询设计器”检查每个搜索条件以确定所做的比较是否会产生联接。如果可以,“查询设计器”自动将搜索条件转换到联接中。

指定搜索条件

  1. 如果还没有搜索条件,将要搜索的列或表达式添加到“网格”窗格中。

    如果要创建选择查询,且不希望搜索的列和表达式出现在查询结果中,请清除每个不要显示的搜索列和表达式的“显示”列。

  2. 定位包含要搜索的数据列或表达式的行,然后在“准则”网格列中,输入搜索条件。

    注释如果不输入运算符,“查询设计器”自动插入等号运算符“=”。

“查询设计器”通过添加或修改 WHERE 子句更新“SQL”窗格中的 SQL 语句。

为一列指定多个搜索条件

背景信息

在一些示例中,需要对相同数据列应用多个搜索条件。例如,可能需要:

若要在同一数据列中搜索可选值,可指定 OR 条件。若要搜索符合几个条件的值,可指定 AND 条件。

指定 OR 条件

使用 OR 条件可以指定几个可选值,用于在同一列中进行搜索。这个选项扩展搜索范围并且可能比搜索单个值返回的行数要多一些。

提示

若要搜索同一数据列中的多个值,通常可以使用 IN 运算符代替。

  1. 在“数据库”窗口中,单击“对象”下的“查询”按钮图像,再单击要打开的查询,然后单击“数据库”窗口工具栏上的“设计”
  2. 在“网格”窗格中,加入要搜索的列。
  3. 在刚加入的数据列的“准则”列中,指定第一个条件。
  4. 在同一数据列的“或?…”列中,指定第二个条件。

    查询

“查询设计器”创建一个包含 OR 条件的 WHERE 子句,如下所示:

SELECT fname, lname
FROM employees
WHERE (salary < 30000)OR(salary > 100000)

指定 AND 条件

使用 AND 条件,用户可以指定对于包含在结果集中的行,某列中的值必须满足两个(或更多)条件。此选项缩小了搜索范围,通常比搜索单个值返回的行数要少一些。

提示

如果搜索一定范围的值,可以使用 BETWEEN 运算符代替用 AND 连接两个条件。

  1. 在“数据库”窗口中,单击“对象”下的“查询”按钮图像,再单击要打开的查询,然后单击“数据库”窗口工具栏上的“设计”
  2. 在“网格”窗格中,加入要搜索的列。
  3. 在刚加入的数据列的“准则”列中,指定第一个条件。
  4. 再次将同一数据列添加到“网格”窗格中,将其放在网格中的一空行中。
  5. 在数据列的第二个实例的“准则”列中,指定第二个条件。

    查询

“查询设计器”创建一个包含 AND 条件的 WHERE 子句,如下所示:

SELECT title_id, title
FROM titles
WHERE (title LIKE '%Cook%')AND
 (title LIKE '%Recipe%')

为多列指定多个搜索条件

背景信息

通过包含几个数据列作为搜索条件的一部分,可以扩大或缩小查询范围。例如,您也许想:

若要创建搜索两列(或多列)中任何一列值的查询,可指定一个 OR 条件。若要创建两列(或多列)都必须满足所有条件的查询,可指定一个 AND 条件。

指定 OR 条件

若要创建由 OR 连接的多个条件,必须将每个单独的条件放到“网格”窗格的不同列中。

  1. 在“数据库”窗口中,单击“对象”下的“查询”按钮图像,再单击要打开的查询,然后单击“数据库”窗口工具栏上的“设计”
  2. 在“网格”窗格中添加想要搜索的列。
  3. 在要搜索的第一列的“准则”列中,指定第一个条件。
  4. 在第二个要搜索的数据列的“或?…”列中,指定第二个条件,将“准则”列留空。

    查询

    “查询设计器”创建一个包含 OR 条件的 WHERE 子句,如下所示:

    SELECT job_lvl, hire_date
    FROM employee
    WHERE (job_lvl >= 200)OR
     (hire_date < '01/01/90')
    
  5. 对想要添加的附加条件,重复步骤 3 和 4。为每个新条件使用一个不同的“或?…”列。

指定 AND 条件

若要使用 AND 连接的条件搜索不同数据列,可将全部条件放到网格的“准则”列中。

  1. 在“网格”窗格中,添加想搜索的列。
  2. 在要搜索的第一个数据列的“准则”列中,指定第一个条件。
  3. 在要搜索的第二个数据列的“准则”列中,指定第二个条件。

    查询

    “查询设计器”创建一个包含 AND 条件的 WHERE 子句,如下所示:

    SELECT pub_id, title
    FROM titles
    WHERE (pub_id = '0877')AND(title LIKE '%Cook%')
    
  4. 对每个想添加的附加条件重复步骤 2 和步骤 3。

在 OR 具有优先权时组合条件

若要使用 OR 来链接条件,并让这些条件优先于用 AND 链接的条件,必须为每个 OR 条件重复 AND 条件。

例如,假设要查找所有为公司工作了五年以上的雇员,且从事低级工种或已退休的雇员。此查询需要三个条件,一个单独条件用 AND 与两个附加条件链接:

  1. 在“数据库”窗口中,单击“对象”下的“查询”按钮图像,再单击要打开的查询,然后单击“数据库”窗口工具栏上的“设计”
  2. 在“网格”窗格中添加想要搜索的数据列。如果想用两个或多个用 AND 链接的条件搜索相同的列,对于想要搜索的每一个值,都必须向网格添加数据列名称。
  3. 通过向“准则”网格列中输入第一个条件,向单独的“或?…”列输入第二个条件(和其他条件),可创建与 OR 链接的条件。例如,要用 OR 链接搜索job_lvl列和status列的条件,输入:

    查询

    输入在上面网格中显示的值,会在“SQL”窗格的语句中生成下列 WHERE 子句:

    WHERE (job_lvl = 100) OR (status = 'R')
    
  4. 为每个 OR 条件输入一次 AND 条件,可创建 AND 条件。将每一次输入放在与对应的 OR 条件相同的网格列中。例如,要添加搜索hire_date列的条件并应用于两个 OR 条件,输入:

    查询

    输入在上面网格中显示的值,会在“SQL”窗格的语句中生成下列 WHERE 子句:

    WHERE (job_lvl = 100)AND
      (hire_date < '01/01/91' )OR
      (status = 'R')AND
      (hire_date < '01/01/91' )
    

    提示

    可以如此重复 AND 条件:添加一次 AND 条件,然后从“编辑”菜单中选择“剪切”和“粘贴”命令为其他 OR 条件重复 AND 条件。

由“查询设计器”创建的 WHERE 子句等同于下列 WHERE 子句,它们使用括号指定了 OR 优先于 AND:

WHERE (job_lvl = 100ORstatus = 'R')AND
   (hire_date < '01/01/91')

注释如果按“SQL”窗格上直接显示的格式输入搜索条件,但接着又在“图表”或“网格”窗格中更改了该查询,则“查询设计器”将重新创建 SQL 语句,以便与明确分配给两个 OR 条件的 AND 条件的格式相匹配。

在 AND 具有优先权时组合条件

若要进行带有 AND 条件的组合,需要将这些条件放置到“网格”窗格的相同列中。若要进行带有 OR 条件的组合,需要将第一个条件放置到“准则”列中,其他的条件放置到一个“或…”列中。

例如,假设要查询为公司工作了五年以上的低级雇员或者不限工作年限的中级雇员。此查询需要三个条件,其中两个条件用 AND 链接:

  1. 在“数据库”窗口中,单击“对象”下的“查询”按钮图像,再单击要打开的查询,然后单击“数据库”窗口工具栏上的“设计”
  2. 在“网格”窗格中添加想要搜索的数据列。如果想用两个或多个用 AND 链接的条件搜索同一列,对于想要搜索的每一个值,都必须向网格添加数据列名称。
  3. 在“准则”列中,输入所有想用 AND 链接的条件。例如,要用 AND 链接搜索hire_date列和job_lvl列的条件,输入:

    查询

    这些网格输入在“SQL”窗格的语句中生成下列 WHERE 子句:

    WHERE (hire_date < '01/01/91')AND
      (job_lvl = 100)
    
  4. 在“或?…”网格列中,输入想用 OR 链接的条件。例如,要添加搜索job_lvl列中另一个值的条件,输入:

    查询

    在“或?…”列中添加一个值会向“SQL”窗格的语句中的 WHERE 子句添加另一个条件:

    WHERE (hire_date < '01/01/91' )AND
      (job_lvl = 100)OR
     (job_lvl = 200)
    

指定分组的条件

通过指定应用于整组的条件,即 HAVING 子句,可以限制查询中出现的组。在分组并聚合数据之后,即可应用 HAVING 子句中的条件。只有符合条件的组才会出现在查询中。

例如,您可能希望看到titles表中每家所有书籍的平均价格高于 $10.00 的出版社。这种情况下,可以指定一个 HAVING 子句,使之带有AVG(price) > 10之类的条件。

注释在某些情况下,可能想在对整组应用条件之前从组中排除个别行。

通过使用 AND 和 OR 链接条件可以为 HAVING 子句创建复杂的条件。

  1. 为查询指定组。
  2. 如果不是在“网格”窗格中,请添加条件所要基于的列。(多数情况下条件都含有已经属于组或汇总列的列。)不能使用不是聚合函数或 GROUP BY 子句的一部分的列。
  3. 在“条件”列中,指定应用于组的条件。

    “查询设计器”在“SQL”窗格中自动在语句中创建 HAVING 子句,如下例所示:

    SELECT pub_id, AVG(price)
    FROM titles
    GROUP BY pub_id
    HAVING (AVG(price) > 10)
    
  4. 为每一个要指定的其他条件重复步骤 2 和 3。

上页:Access 2003完整教程:指定索引的填充因子 (ADP) 下页:Access 2003完整教程:细分数据库图表 (ADP)

Access 2003完整教程:指定搜索条件 (ADP)

Access 2003完整教程:细分数据库图表 (ADP)Access 2003完整教程:在查询中汇总或聚合所有行的值 (ADP)
Access 2003完整教程:使用自定义表达式汇总或聚合值 (ADP)Access 2003完整教程:在查询中使用表达式 (ADP)
Access 2003完整教程:在同一查询中使用 HAVING 和 WHERE 子句 (ADP)Access 2003完整教程:验证查询 (ADP)
Access 2003完整教程:查看外键约束属性 (ADP)Access 2003完整教程:缩放数据库图表 (ADP)
Access 2003完整教程:即将删除一行或多行。Access 2003完整教程:不允许空约束表达式。
Access 2003完整教程:DELETE 语句与 COLUMN REFERENCE 约束冲突。Access 2003完整教程:已对多行发生影响。
Access 2003完整教程:已成功执行了查询。Access 2003完整教程:已对照数据源检查过 SQL 语法。
Access 2003完整教程:确定要删除数据库中选定的关系吗?Access 2003完整教程:“数据库设计器”出错
Access 2003完整教程:删除选定的列将同时删除关系。Access 2003完整教程:是否保存对数据库图表的更改?
Access 2003完整教程:是否保存对该表的更改?Access 2003完整教程:INSERT INTO 子句的值列表中出错:无法识别“<Os>”
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号