gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:02:29 24 4
gpt4 key购买 nike

我最近发现 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,则再进行一次连接。

关于sql - 常量值如何影响 Joins 的 ON 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1534745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com