【发布时间】:2014-06-30 17:50:49
【问题描述】:
我正在使用 Oracle SQL。 以下是一些示例表:
People
PersonID Name
1 Elmo
2 Oscar
3 Chris
Attribute
PersonID Attribute
1 Happy
1 Muppet
1 Popular
2 Grouchy
2 Muppet
2 Popular
3 Programmer
我想要一份人员名单,我想知道我们是否知道他们是快乐的还是不高兴的。以下是我想要的输出:
Name Mood
Elmo Happy
Oscar null (Happy)
Chris null (Happy)
Elmo null (Grouchy)
Oscar Grouchy
Chris null (Grouchy)
如果我使用这个查询,它不会返回我想要的额外的空结果行:
SELECT p.Name, a.Attribute
FROM People p
LEFT OUTER JOIN Attributes a
ON p.PersonID = a.PersonID AND a.Attribute IN ('Happy','Grouchy')
我知道工会会起作用。有没有其他方法可以做到这一点?
原谅我的懒惰,我修改了一个已经存在的问题。
【问题讨论】:
-
你是说你想要一个
NULL,但两者都不存在? -
您需要为“IN”条件下的每种情绪加入属性表。否则将无法返回 Elmo 快乐和 Elmo NULL
-
@GoatCO 是的,你是对的。
标签: sql oracle outer-join