加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MsSql > 正文

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

发布时间:2020-05-24 12:01:44 所属栏目:MsSql 来源:互联网
导读:我最近发现LEFT JOIN的ON子句可能包含诸如(1 = 1)之类的值. 这令我很沮丧,因为它打破了我对连接功能的看法. 我遇到了以下情况的更精细版本: SELECT DISTINCT Person.ID, ...FROM Person LEFT JOIN Manager ON (Manager.ID = Person.ID OR Manager.ID = -1))W

我最近发现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”会完成什么?这怎么会影响加入?

解决方法

如果人员表是:
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(在管理器表上)连接.如果管理器表中存在相同的id,则会发生另外一个连接.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读