oracle中( )的用法

2021-10-04 02:25:46 字數 1136 閱讀 4742

作為oracle菜鳥級選手,最近頻繁在工作中看到同事在寫sql的時候用到(+),例如:

select..

....

from j1_di.di_swjg a, j1_sbf.sbf_jdxjm_tj_fdq_lj b

where b.ssyf(+)

='202003'

and a.swjg_dm <>

'00000000000'

and a.sj_swjg_dm =

'00000000000'

)and a.swjg_dm = b.swjg_dm(+)

and b.swjg_dm(+)

= b.sjswjg_dm(+)

and a.swjg_bz =

'j'and a.jcjg_bz !=

'y'and a.swjg_dm not

like

'2%'

and a.yxbz =

'y'order

by a.swjg_dm

之前我知道:

oracle的(+)是一種特殊的用法,標識外連線,放在兩個表的主鍵關聯上,沒有(+)的一方表示主表,有(+)號的一方表示附表。

但是主鍵外的條件加上(+)我真的是第一次見(才疏學淺。。。),查了查才知道,兩表關聯的時候,附表的所有條件都得加(+)。

這麼寫留等同於:

select..

.from

(select

*from j1_di.di_swjg

where swjg_dm <>

'00000000000'

and sj_swjg_dm =

'00000000000'

and swjg_bz =

'j'and jcjg_bz !=

'y'and swjg_dm not

like

'2%'

and yxbz =

'y') a,

(select

*from j1_sbf.sbf_jdxjm_tj_fdq_lj

where ssyf =

'202003'

and swjg_dm = sj_swjg_dm) b

Oracle中rownum的用法

1 查詢第幾行的記錄 select sal from emp where rownum 1 查詢得到第一行記錄 select sal from emp where rownum 5 不可以查詢到第五行記錄,因為 rownum 總是從1 開始查詢的,故這種方式不可以直接得到第幾行的記錄。若想得到第五行...

Oracle中rownum的用法

1 查詢第幾行的記錄 select sal from emp where rownum 1 查詢得到第一行記錄 select sal from emp where rownum 5 不可以查詢到第五行記錄,因為rownum 總是從1開始查詢的,故這種方式不可以直接得到第幾行的記錄。若想得到第五行記錄...

oracle中 all any in的用法

下面是一些例子 找出員工中,只要比部門號為10的員工中的任何乙個員工的工資高的員工的姓名個工資。也就是說只要比部門號為10的員工中的那個工資最少的員工的工資高就滿足條件。select ename,sal from emp where sal any select sal from emp where...