自联接表比较值

时间:2019-04-18 17:27:27

标签: sql oracle-sqldeveloper

我正在尝试将列中的值与使用同一表中的联接进行比较。 这是表格的示例:

|favorite item|answer|name|
-----------------------------
|color|red|jake|
|animal|bear|jake|
|food|pizza|jake|
|color|blue|sally|
|movie|frozen|sally|
|food|pasta|sally|

我尝试使用联接和联合,但是它们都无法完全获得我想要的东西。

这是我所能获得的最接近的结果:

select j.favorite, s.favoite, j.answer,  s.answer  
from testTable j
full join testTable s on (j.favorite=s.favorite) and s.name='sally' 
where j.name = 'jake';

但这给了我

-----------------------------
|color|color|red|blue|    
|animal|null|bear|null|   
|food|food|pizza|pasta|

我希望它为两个学生提供null值:

|color|red|blue|
|animal|bear|null|
|food|pizza|pasta|
|movie|null|frozen|

希望这是有道理的,非常感谢您的帮助。谢谢

1 个答案:

答案 0 :(得分:1)

FULL JOIN很棘手-您似乎想要这么做。关键是在JOIN之前 进行过滤:

select j.favorite, s.favoite, j.answer,  s.answer  
from (select j.*
      from testTable j
      where j.name = 'jake'
     ) j full join
     (select s.*
      from testTable s
      where s.name = 'sally'
     ) s
     on j.favorite = s.favorite;