对于包含一个外连接的查询子句有一个令人困惑的地方,那就是我们应该把一个逻辑表达式放在on过滤器中还是where过滤器中。二者最大的区别在于,on过滤器是在添加外部行前执行(1计算笛卡尔积2过滤3添加外部行),而where过滤器是在添加外部行后执行。
通过on过滤器对于保留表中的一行的剔除并不是最终的因为添加外部行时仍然会把数据加回来。相反,通过where过滤器对一行的剔除是最终的。明白这一点可以帮助你做出正确的选择。
例如:
select c.customerid,c.city,o.orderid
from dbo.customers as c
left join
dbo.orders as o
on c.customerid=o.customerid
and
c.city=N'Madrid'
运行这段代码得到如下结果:
图1-1
请注意第七条数据,city=’Zion’,通常我们会疑惑 我们不是已经在on条件中进行了顾虑了吗
(只取city为Madrid马德里的数据)?这条数据在on阶段已经被过滤掉了,但是在添加外部行这个阶段时又被添加进来了(这个查询用的是左外连接),orderid为null,就是说通过on条件过滤后在orders表未发现相匹配的记录。
请比较:
select c.customerid,c.city,o.orderid
from dbo.customers as c
left join
dbo.orders as o
on c.customerid=o.customerid
图1-2
请注意图1-1中第七条数据和图1-2图中第七条数据的区别。
请比较:
select c.customerid,c.city,o.orderid
from dbo.customers as c
join
dbo.orders as o
on c.customerid=o.customerid
and
c.city=N'Madrid'
图1-3
两个外部行在On阶段都被过滤掉。由于该连接不是外连接只有两个处理阶段(1计算笛卡尔积 2 过滤),没有添加外部行这个阶段,所以没有下过订单以及city<>N’Madrid’的客户被过滤掉了,由此可以清晰看出on条件的起作用的阶段,帮助我们设计出我们需要的谓词
过滤(on where having)
分享到:
相关推荐
本文将深入探讨EXISTS谓词的工作原理、用法以及其与IN和JOIN操作符的区别。 一、EXISTS谓词的基本概念 EXISTS谓词用于测试一个子查询是否至少返回一行数据,而不是关心返回的具体数据内容。其基本语法结构如下: ...
### 人工智能与谓词逻辑知识点解析 #### 一、引言 在计算机科学与人工智能领域,逻辑推理是一种重要的工具,用于模拟人类的推理过程。其中,**谓词逻辑**是逻辑学的一个分支,尤其适用于处理复杂的知识表示和推理...
在IT领域,尤其是在人工智能的研究中,归结原理(Resolution Principle)是证明逻辑定理的一种重要方法,它在基于谓词逻辑的自动定理证明中扮演着核心角色。本实验旨在帮助我们深入理解归结原理及其在定理证明过程中...
人工智能课件,关于谓词逻辑与归结原理,在学习了离散数学的基础上,进一步深入的学习谓词逻辑,掌握人工智能的初步知识
谓词逻辑离散数学
人工智能中的谓词逻辑归结是一种重要的推理方法,它在理解复杂知识表示、自动推理和解决数学及逻辑问题中发挥着核心作用。谓词逻辑归结是建立在逻辑基础之上的,特别是弗雷格的算术基础和希尔伯特的形式主义之上。这...
"一阶谓词逻辑和知识绑定" 一阶谓词逻辑是人工智能较早期的方法之一,基于谓词逻辑的推理是通过对函数形式的命题进行逻辑推理运算并求解。谓词逻辑中,命题是由谓词文字(函数)、逻辑运算符和量词组成的。逻辑...
通过引入谓词、量词等概念,谓词逻辑极大地扩展了逻辑分析的能力,使得我们能够更深入地理解逻辑推理的本质。 #### 二、问题背景与动机 在命题逻辑中,我们将一个完整的陈述句视为一个整体,使用单一的字母(如P、...
为了优化SQL查询执行效率,本文深入探讨了SQL谓词下压技术的理论基础及其在实际操作中的应用。谓词下压是关系数据库查询优化的重要技术之一,它涉及到将查询中的条件过滤(即谓词)尽可能早地应用于数据处理的各个...
谓词逻辑是逻辑学的一个分支,它扩展了命题逻辑的能力,允许处理含有变量的陈述,这些变量可以代表不确定或未指定的对象。命题逻辑只能处理不包含变量的简单命题,而谓词逻辑则能够精确地表达和推理关于这些变量的...
它不仅系统地介绍了命题逻辑和谓词逻辑的基本概念、定义和公式,还深入探讨了它们在现实世界中的应用,为逻辑学的学习和研究提供了坚实的基础。通过本课件的学习,使用者将能够在逻辑学领域建立起扎实的基础,进而在...
### 逻辑谓词与Prolog #### 一、Prolog的逻辑理论基础 ##### (一)Horn逻辑 Horn逻辑是一阶谓词逻辑的一个子集,它在人工智能领域尤其重要,因为它是Prolog程序设计语言的理论基石。Horn逻辑主要通过Horn子句来...
谓词逻辑推理,人工智能的基本理论,为人工智能系统的开发奠定了一定的理论基础
数理逻辑通过数学方法深入剖析逻辑的本质,它涉及到一系列符号语言和运算规则,这些规则在形式系统中被用来描述和推导命题。 命题逻辑,也称为一阶逻辑,主要关注的是命题之间的运算和推理。一个命题是具有明确真假...
在人工智能的发展史上,谓词逻辑与归结原理是两个里程碑式的理论,它们不仅为人工智能提供了强有力的工具,还极大地推动了人工智能在知识表示和自动推理领域的深入研究。 谓词逻辑,作为一种形式化的知识表示语言,...
"离散数学谓词逻辑习题课PPT课件" 本资源是一个关于离散数学谓词逻辑的习题课PPT课件,共32页,涵盖了谓词逻辑的基础知识点和习题。 在第一页中,引入了命题符号化的概念,并提供了一些基本的谓词逻辑公式,例如∀...
离散数学谓词演算推理理论PPT学习教案 离散数学谓词演算推理理论是指在数学逻辑中,使用谓词演算来描述和推理的方法。谓词演算推理理论是一种形式系统,用于描述和推理具有量词和谓词的命题。 在谓词演算推理理论...