gpt4 book ai didi

sql - 为什么不能在 OUTER JOIN 操作中使用 OR 或 IN?

转载 作者:行者123 更新时间:2023-12-02 05:56:50 35 4
gpt4 key购买 nike

如果我在 Oracle SQL 数据库中使用以下查询(受此问题 here 启发):

SELECT p.Name, a.Attribute
FROM People p
LEFT OUTER JOIN Attributes a
ON p.PersonID = a.PersonID
WHERE a.Attribute IN ('Happy','Grouchy')
AND p.person_id IN ('Elmo', 'Oscar')

我会得到错误:

ORA-01719: outer join operator (+) not allowed in operand of OR or IN

虽然这应该可以解决问题:

SELECT p.Name, a.Attribute
FROM People p
LEFT OUTER JOIN Attributes a
ON p.PersonID = a.PersonID AND a.Attribute IN ('Happy','Grouchy') AND p.person_id IN ('Elmo', 'Oscar')

谁能解释一下第一个版本调用错误的原因是什么?实际区别是什么?

最佳答案

顺便说一句,您已经在那里定义了一个内部联接。

通过针对右侧表格添加子句,它必须满足这两个条件。

SELECT p.Name, a.Attribute
FROM People p
LEFT OUTER JOIN Attributes a
ON p.PersonID = a.PersonID
WHERE a.Attribute IN ('Happy','Grouchy') -- This means that the right side must exist also
AND p.person_id IN ('Elmo', 'Oscar')

使用 INNER JOIN 或将此 WHERE 作为 AND 移至 ON 子句

关于sql - 为什么不能在 OUTER JOIN 操作中使用 OR 或 IN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51673246/

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