Access 合并搜索条件的规则和网格窗格约定

2024-06-22 11:29:15阅读量:44 字体:

可以创建包含任意数量搜索条件的查询,这些条件用任意数量的 AND 和 OR 运算符相链接。组合了 AND 和 OR 子句的查询会很复杂,所以有必要了解在执行这种查询时查询被解释的方式,以及这种查询在“网格”和 SQL 窗格中是如何表示的。

为便于理解下面的讨论,假设正在处理包含有hire_date、job_lvl和status列的employee表。该示例假定用户需了解诸如某雇员在公司里工作了多久(也就是了解该雇员的雇佣日期)、该雇员从事何种工作(也就是岗位级别)以及该雇员的状态(例如,是否退休)等信息。

AND 和 OR 运算符的优先级

当执行一个查询时,它会首先计算用 AND 运算符链接的子句,然后计算用 OR 运算符链接的子句。

注释NOT 运算符的优先级比 AND 和 OR 都高。

例如,为了找出在低级岗位上为公司工作了五年以上的雇员以及不论工作年限长短在中级岗位上的雇员,可以构建如下 WHERE 子句:

WHERE hire_date < ’01/01/90’ AND job_lvl = 100 OR job_lvl = 200
若要覆盖默认的 AND 比 OR 优先级高的约定,可以在 SQL 窗格中将特定条件两边加上括号。括号中的条件总是先计算。例如,为了找出在低级或中级岗位为公司工作了五年以上的所有雇员,可以构建如下 WHERE 子句:

WHERE hire_date < ’01/01/90’ AND(job_lvl = 100 OR job_lvl = 200)
提示

为使优先级结构清楚,建议在组合使用 AND 和 OR 子句时总是使用括号,而不要依赖于默认的优先级。

AND 子句与多个 OR 子句一起使用的方式

理解 AND 和 OR 子句的组合方式,有助于在“查询设计器”中构建和理解复杂的查询。

如果用 AND 链接了多个条件,则与 AND 链接的第一组条件会应用于第二组中的所有条件上。换句话说,用 AND 链接到另一个条件的条件,会分配给第二组中的所有条件。例如,下列示意的表达方式显示了一个链接到一组 OR 条件的 AND 条件:

A AND (B OR C)
上述表达方式与下列示意的表达方式在逻辑上等价,而下面的表达式显示了 AND 条件是如何分配给第二组中的条件的:

(A AND B) OR (A AND C)
这种分配原则影响“查询设计器”的使用方式。例如,假设要查找所有在低级或中级岗位为公司工作了五年以上的雇员。您可以在 SQL 窗格的语句中输入如下 WHERE 子句:

WHERE (hire_date < ’01/01/90’ ) AND (job_lvl = 100 OR job_lvl = 200)
用 AND 运算符链接的子句应用于使用 OR 运算符链接的两个子句。更清楚的等价表达方式是对 OR 子句中的每个条件均重复 AND 条件。下面的语句比上一语句逻辑关系更清楚(也更长),但是逻辑上是等价的:

WHERE (hire_date < ’01/01/90’ ) AND (job_lvl = 100) OR (hire_date < ’01/01/90’ ) AND (job_lvl = 200)
将 AND 子句分配给链接的所有 OR 子句的分配原则,适用于牵涉到的任意多单一条件。例如,假设想找出所有在高级或中级岗位为公司工作了五年以上或已退休的雇员。WHERE 子句可能如下所示:

WHERE (job_lvl = 200 OR job_lvl = 300) AND (hire_date < ’01/01/90’ ) OR (status = ’R’)
分配了用 AND 链接的条件之后,WHERE 子句可能如下所示:

WHERE (job_lvl = 200 AND hire_date < ’01/01/90’ ) OR (job_lvl = 200 AND status = ’R’) OR (job_lvl = 300 AND hire_date < ’01/01/90’ ) OR (job_lvl = 300 AND status = ’R’)
在“网格”窗格中如何表示多个 AND 和 OR 子句

“查询设计器”在“网格”窗格中表达搜索条件。但是,对于包含用 AND 和 OR 链接的多个子句的条件,“网格”窗格中的表达方式可能与预想的不一样。另外,如果在“网格”或“图表”窗格中修改查询,则会发现 SQL 语句与所输入的会有所不同。

下面是 AND 和 OR 子句在“网格”窗格中显示的一般规则:

用 AND 链接的所有条件都显示在“准则”网格列中,或显示在同一“或?…”列中。
用 OR 链接的所有条件会分开显示在不同的“或?…”列中。
如果 AND 和 OR 子句的组合逻辑结果是将 AND 条件分配给几个 OR 子句,则“网格”窗格会重复必要数量的 AND 子句,以清楚地表达组合结果。
例如,在 SQL 窗格中可能创建如下的搜索条件,其中用 AND 链接的两个子句优先于用 OR 链接的第三个子句:

WHERE (hire_date < ’01/01/90’ )AND (job_lvl = 100)OR (status = ’R’)
“查询设计器”在“网格”窗格中将这个 WHERE 子句表达如下:

 

但是,如果链接的 OR 子句具有比 AND 子句高的优先级,则对每个 OR 子句都会重复这个 AND 子句。这样,这个 AND 子句会分配给每个 OR 子句。例如,在 SQL 窗格中,可能创建如下 WHERE 子句:

WHERE (hire_date < ’01/01/90’ )AND ( (job_lvl = 100)OR (status = ’R’) )
“查询设计器”在“网格”窗格中将这个 WHERE 子句表达如下:

 

如果链接的 OR 子句只涉及一个数据列,则“查询设计器”会将整个 OR 子句放在该网格的单个单元格中,从而避免重复使用 AND 子句。例如,在 SQL 窗格中,可能创建如下 WHERE 子句:

WHERE (hire_date < ’01/01/90’ )AND ((status = ’R’)OR(status = ’A’))
“查询设计器”在“网格”窗格中将这个 WHERE 子句表达如下:

 

如果更改了查询(例如,在“网格”窗格中更改了一个值),“查询设计器”会在 SQL 窗格中重新创建这个 SQL 语句。重新创建的 SQL 语句会类似于“网格”窗格的显示,而与原来的语句有所不同。例如,如果“网格”窗格中包含要分配的 AND 子句,则 SQL 窗格中的生成语句会用明确分配的 AND 子句重新创建。
 

以上就是Access 合并搜索条件的规则和网格窗格约定的全部内容,望能这篇Access 合并搜索条件的规则和网格窗格约定可以帮助您解决问题,能够解决大家的实际问题是谜爱阁生活网一直努力的方向和目标。

推荐阅读

  • 微信注销后聊天记录还能恢复吗

    微信注销后聊天记录还能恢复吗

    如果对聊天记录进行备份或迁移的话,微信注销后聊天记录可以恢复。如果没有对聊天记录进行备份或迁移的话,微信注销后聊天记录无法恢复。以下是注销微信的操作步骤: 微信注销后聊天记录还能恢复吗 1、打开微信A...

    阅读: 941

  • 微信群太多怎么实现分组管理

    微信群太多怎么实现分组管理

    微信群太多可以使用折叠群的功能进行分组管理,将群设置为折叠群的具体操作步骤如下: 微信群太多怎么实现分组管理 1、打开微信app,点击下方的通讯录,再点击群聊进入群聊界面。 2、进入群聊界面后,选择...

    阅读: 892

  • 微信预约挂号怎样切换就诊人

    微信预约挂号怎样切换就诊人

    以梧州市中医院公众号为例,在梧州市中医院微信公众号预约挂号切换就诊人的具体操作步骤如下: 微信预约挂号怎样切换就诊人 1、打开微信APP,搜索梧州市中医院公众号”,点击该公众号,再点击发消...

    阅读: 832

  • 快手别人怎么关注不了我

    快手别人怎么关注不了我

    如果别人关注不了你的快手账号的话,可能是你开启了隐私用户”,关闭隐私账户”的具体操作方式如下: 快手别人怎么关注不了我 1、打开快手,点击左上角的三条横线”,进入功...

    阅读: 869

  • 微信一打就是对方忙是不是设置了

    微信一打就是对方忙是不是设置了

    微信一打就是对方忙不是设置了,因为无法设置。打微信电话提示对方忙”有以下两种情况:1、对方在忙线,正在与别人打微信或者视频电话。2、对方不想接听电话,选择挂断。以下是拨打微信语音电话的具体...

    阅读: 763

  • 怎么约顺风车

    怎么约顺风车

    顺风车是在21世纪比较流行的词语,是指搭便车、顺路车、拼车的意思。以下是约顺风车的具体操作方法: 怎么约顺风车 1、打开微信,点击我”-服务”-滴滴出行”,进入该界...

    阅读: 777