作為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...