Oracle中常用 left join 和 right join 来进行外连接,同时,oracle也支持 (+) 的特殊用法,也是表示外连接,并且总是放在非主表的一方。
例如:
左外连接:
select a.id,b.id
from a
left join b
on a.id = b.id;
等价于:
select a.id, b.id
from a,b
where a.id = b.id(+);
同理,右外连接:
select a.id,b.id
from a
right join b
on a.id = b.id;
等价于:
select a.id, b.id
from a,b
where a.id(+) = b.id;
注意:
1.(+)操作符只能出现在WHERE子句中,并且不能与OUTER JOIN语法同时使用。
2.当使用(+)操作符执行外连接时,如果在WHERE子句中包含有多个条件,则必须在所有条件中都包含(+)操作符。
3.(+)操作符只适用于列,而不能用在表达式上。
4.(+)操作符不能与OR和IN操作符一起使用。
5.(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。
left/right join 和 (+) 的区别:
1.效率上没区别
2.left join 可读性高、功能更全面、通用性强、而且是新标准
3.建议使用left join
END 2018-12-18 22:52:22