加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:49:31 所属栏目:MsSql教程 来源:网络整理
导读:我最近发现LEFT JOIN的ON子句可能包含诸如(1 = 1)之类的值. 这令我很沮丧,因为它打破了我对连接功能的看法. 我遇到了以下情况的更精细版本: SELECT DISTINCT Person.ID,...FROM Person LEFT JOIN Manager ON (Manager.ID = Person.ID OR Manager.ID = -1))WH
我最近发现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,则会发生另外一个连接.

(编辑:李大同)

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

    推荐文章
      热点阅读