ORACLE 字段过滤 字段后面加(+)是什么意思

select p.fdept_id, decode(p.fis_allow_edit, 'Y', '0', null) ftalbe_desc, t.*

  from hthis.p_cp_table t, hthis.PSTDEPTCP p
 where t.ftable_id = p.ftable_id(+)

   and p.fdept_id(+) = '9999';


这是我在一个不是我的项目上偶然看到的sql语句。

第一个(+)是左连接,但是第二个(+)引起了我的兴趣。


经过尝试,我发现这个语句等同于:

select p.fdept_id, decode(p.fis_allow_edit, 'Y', '0', null) ftalbe_desc, t.*
  from hthis.p_cp_table t, (select * from hthis.PSTDEPTCP where fdept_id = '9999')  p
 where t.ftable_id = p.ftable_id(+);


也就是说第二个(+)的作用是过滤 p表的记录再进行关联。如果不加,那么就在t表和p表关联后的数据集再过滤。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值