某银行的Oracle面试题,请教大神。

某银行的Oracle面试题,请教大神。
2024-11-06 20:21:10
推荐回答(2个)
回答1:

这个问题不是考你left join 跟(+)的嘛,对于你这个题,是可以这么写的。
赠:
Oracle 建议你用在From语句后用Outer Join语法 而不是Oracle的Join操作符(+).而且(+)是要受下面的规则限制的,但Outer Join语法则不受的~~

1)你不可以在查询块中使用(+) 当它同时包含 join的from语句中
2)(+)只是在where语句中,并且只能对应一个表或视图的一行字段
3)如果A和B做联接时有多个条件,那么(+)必须完善所有的匹配条件,
如果没有 ,oracle不会警告你~只是结果自然不同的
4)不可以在作出一个表外查询 另张表内查询的(+)联接操作~~
5)不可以用(+)外联接到自己 当然Self Join是可以的
6)含(+)的Where后的注意
OR不可用
IN不可用
子查询不可用

评论一楼的回答,如果楼主的问题是你的那个案例,确实要把关联条件都加上(+)。但是,题目中明显是个常量嘛,一楼太紧张了吧。

回答2:

不对.
第一句SQL,作为主表的 f 和作为从表的 g ,他们的关联关系是 f.orderid = g.rferenceid,而从表中又使用了 paymentype = '1'

而如果要改成第二句的形式的话,需要这样(只需改楼主提供的SQL的最后两个关联条件):
and g.paymentype(+) = '1'
and a.orderid = g.rferenceid(+)