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

某银行的Oracle面试题,请教大神。... 某银行的Oracle面试题,请教大神。 展开
 我来答
earth旋风
2014-02-17
知道答主
回答量:16
采纳率:0%
帮助的人:5.9万
展开全部
这个问题不是考你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不可用
子查询不可用

评论一楼的回答,如果楼主的问题是你的那个案例,确实要把关联条件都加上(+)。但是,题目中明显是个常量嘛,一楼太紧张了吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heyongsai
2014-02-17 · TA获得超过1184个赞
知道小有建树答主
回答量:472
采纳率:0%
帮助的人:342万
展开全部
不对.
第一句SQL,作为主表的 f 和作为从表的 g ,他们的关联关系是 f.orderid = g.rferenceid,而从表中又使用了 paymentype = '1'

而如果要改成第二句的形式的话,需要这样(只需改楼主提供的SQL的最后两个关联条件):
and g.paymentype(+) = '1'
and a.orderid = g.rferenceid(+)
追问
朋友,第一个句中在g表中加paymentype = '1' 和 第二句中在where条件里加入paymentype = '1'
有什么区别?

还有请教and g.paymentype(+) = '1'
and a.orderid = g.rferenceid(+)这两句是什么意思,为什么要加这两句。谢谢
追答

例:

主表 tbl_test02,数据如下:

 

从表 tbl_test01,数据如下:

 

查询SQL1,语句如下:

select
t2.*, t1.name
from
tbl_test02 t2, --主表
tbl_test01 t1 --从表
where 1=1
and t2.key = t1.id(+)
and t1.name(+) = 'a'

查询结果如下:

 

若不加另外一个加号,即:

and t2.key = t1.id(+)
and t1.name = 'a'

则查询结果为(其实此时的SQL就是内连接了):

 

Oracle 中在where中从表字段的一方使用 (+) 括弧加,表示左右连接,等同于 left(right) join on

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式