当前位置: 首页 > 面试题库 >

常量值如何影响Joins的ON子句?

商飞航
2023-03-14
问题内容

我最近发现,LEFT JOIN的ON子句可能包含诸如(1 = 1)的值。

这让我很沮丧,因为它破坏了我对联接功能的理解。

我遇到了以下情况的详细版本:

SELECT DISTINCT Person.ID, ...
FROM Person LEFT JOIN Manager 
ON (Manager.ID = Person.ID OR Manager.ID = -1))
WHERE (...)

这是完全合法的。如果有的话,“ Manager.ID = -1”会完成什么工作?这如何影响Join?


问题答案:

如果人员表是:

id  name

1   Person One
2   Person Two
3   Person Three
4   Person Four
5   Person Five

如果经理表是

id  name
-1  Admin
2   Manager One
3   Manager Two

如果查询是:

SELECT DISTINCT *
FROM Person LEFT JOIN Manager 
ON (Manager.id = Person.id OR Manager.id = -1)

那么结果是:

Person One  -1  Admin
Person Two  -1  Admin
Person Two  2   Manager One
Person Three    -1  Admin
Person Three    3   Manager Two
Person Four -1  Admin
Person Five -1  Admin

在这里,所有人员行都以-1 Admin(在manager表上)联接,并且如果manager表中存在相同的ID,则会再发生一次联接。



 类似资料:
  • 问题内容: 在一个简单的实验中,我设置并用来打印函数被调用的频率。它在我的计算机上每10毫秒被调用一次。 但是,如果这样,就会有很多抖动被调用。在大多数情况下,它确实每10毫秒被调用一次,但有时它会完全错过最后期限。 我已经研究了NOHZ和NOHZ。是负责更新值的功能,还负责流程的循环调度。 NOHZ功能可关闭系统上的高分辨率计时器。 我无法理解的是高分辨率计时器如何影响?即使高分辨率硬件处于睡眠

  • 名称是我们要搜索的字段,总和是我们要对搜索结果进行加权的字段(但仍要考虑与作者名称的最佳匹配)。我不确定在这种情况下,将总和添加到文档中是否是正确的做法。我知道需要一些实验来找出如何最好地混合这两个因素的权重,但我的问题是我不知道如何首先做到这一点。 我能找到的任何例子要么是Lucene4之前的,要么似乎不起作用。我以为这就是我要找的,但似乎不起作用。感谢您的帮助!

  • 所以我有家长和孩子班。我希望他们输出一些字段的值(如果存在),并且存在问题。 子类具有字段“name”,但结果具有两个字符串“name 不存在”。此外,如果父类中有名称,则第二个字符串无论如何都将是“名称不存在”。 我设法捕获了错误:IllegalAccessException-父类无法访问子字段,尽管子字段是打开的,还有“名称”字段。它还告诉孩子的成员是最终的和私有的。 我做错了什么?我希望每个

  • 我对一个< code>select有一些奇怪的问题。< code>WHERE子句中的顺序可能会影响结果吗? 这是我的选择: 这将重现这个结果:http://dl.dropbox.com/u/4892450/sqlSelectProblem/select1.PNG 当我使用这个条件时: (不同的顺序) 我得到一个不同的结果(参见 列): http://dl.dropbox.com/u/4892450

  • 问题内容: 以下两个查询有什么区别? 问题答案: 在SQL方面,绝对没有区别:这两个查询完全相同。 (您可以通过回显它们进行检查) 是的更完整的语法,允许使用: 有关更多信息,您应该阅读手册的 变量解析/复杂(curly)语法 部分 (引用几句话) : 之所以称其为“复杂”,是因为语法复杂,而是因为它允许使用复杂的表达式。 可以通过此语法包括具有字符串表示形式的任何标量变量,数组元素或对象属性。

  • 问题内容: 给定此表: 我需要编写一个plpgsql函数,其变量名与主键名冲突,必须在子句中使用该主键名: 这将进行编译,但随后会抛出一个含糊的列引用: 我尝试将完整的列名指定为不编译,或不编译: 但是它也失败了: 有解决方案吗? 编辑:我找到了一种解决方法: 表名加在哪里。我不知道这有多可靠。我仍然想改为指定列名。 问题答案: 首先,对于变量和属性都是一个不好的名字。两者兼而有之时,代码将看起来