oracle的外關聯

2021-08-30 07:33:29 字數 992 閱讀 8546

oracel實際開發中,經常遇到這樣的狀況,兩個表作外關聯時,同時想對被關聯表進行條件限制,容易出錯,故在此總結下。

例項:sql1:

select count(*)

from econtract.cm_contracts_single_v smcon,

base.bas_regions_v reg ,

base.bas_regions_v off

where reg.region_id(+) = smcon.region

and smcon.office = off.region_id(+)

and reg.enable_flag(+) = 'y'

and off.enable_flag(+) = 'y'

and off.region_type(+) = 3

and reg.region_type(+) = 2

;sql2:

select count(*)

from econtract.cm_contracts_single_v smcon,

base.bas_regions_v reg ,

base.bas_regions_v off

where reg.region_id(+) = smcon.region

and smcon.office = off.region_id(+)

and reg.enable_flag= 'y'

and off.enable_flag = 'y'

and off.region_type = 3

and reg.region_type = 2

;加粗部分為被外關聯表的過濾條件。

二者的區別一看 就是過濾條件的寫法不一樣。

實質區別為:sql1 不影響主表的查詢總數:是對被關聯表自身資料進行條件過濾.

sql2 影響主表的查詢總數:是對主表與外表作關聯後的資料 進行條件過濾.

Oracle巧取指定記錄以及巧用外關聯查詢

如何取得表中第6到第10條記錄的值。第一種方法,使用minus語句 假設ddl語句如下 create table t id varchar2 4 primary key,value int 那麼第一種方法就是取出前5條,再取出前10條,然後採用集合運算的方法把前10條減去前5條就ok了,sql語句如...

Orcle 內外關聯與 號作用

1.外關聯 左關聯 left join 返回包括左表中的所有記錄和右表中聯結字段相等的記錄。右關聯 right join 返回包括右表中的所有記錄和左表中聯結字段相等的記錄。全外關聯 full join 兩個表的記錄都返回,不聯結的字段補null。內關聯 自關聯 inner join 只返回兩個表中...

巧取指定記錄與外關聯查詢

1 取得表中第6到第10條記錄的值 1.1 第一種方法,使用minus語句 假設ddl語句如下 create table t id varchar2 4 primary key,value int 那麼第一種方法就是取出前5條,再取出前10條,然後採用集合運算的方法把前10條減去前5條就ok了,sq...