在查询中使用+号

时间:2014-04-09 11:45:42

标签: sql oracle

我在其中一个查询中遇到了(+)符号,经过一些研究后我明白这意味着左外连接。但是,我无法理解这个查询。请在没有(+)符号的情况下重写此查询。

 select e.masterid from streamed_events e, masters_encode m where 
 e.masterid = m.id (+) and 
 COMPANY_ID_R = m.company_id(+) and 
 m.id is NULL and m.company_id is  NULL

感谢您的帮助......

3 个答案:

答案 0 :(得分:2)

加号表示JOIN中的可选表

select e.masterid 
from streamed_events e
LEFT OUTER JOIN  masters_encode m 
 ON e.masterid = m.id  and  COMPANY_ID_R = m.company_id
WHERE m.id is NULL and m.company_id is  NULL

Documentation

答案 1 :(得分:0)

select e.masterid
from streamed_events e
left outer join masters_encode m on e.masterid = m.id and COMPANY_ID_R = m.company_id
where m.id is NULL and m.company_id is  NULL

虽然该查询有些奇怪。它似乎正在查找streamed_eventsmasters_encode中没有相应行的行,因为这些行将为空m.idm.company_id。奇怪的是,它使用变量COMPANY_ID_R来匹配m.company_id,但之后只选择它为空。

也许如果你能解释它想做什么,我可以给出更好的答案。

答案 2 :(得分:0)

select e.masterid 
from streamed_events e 
left outer join masters_encode  on e.masterid= m.id 
left outer join COMPANY on  COMPANY_ID_R =m.company_id 
where m.id is NULL and m.company_id is  NULL