oracle 谓词是什么意思,oracle sql外连接的时候谓词的应用顺序是会影响结果的

oracle sql外连接的时候谓词的应用顺序是会影响结果的, 非外连接则没有关系, 不过oracle之所以这样,虽然理解上觉得有点不可思议, 应该也是有其原因的.

SELECT COUNT(DISTINCT B.COMPANY_ID)

FROM (SELECT *

FROM ODS.BAS_TAB_EMPLOYEE_FJYD C

WHERE C.END_DATE = TO_DATE('3000-12-31', 'YYYY-MM-DD')

AND C.REG_DATE < TO_DATE('2010-01-24 00:00:00' /*:v_end_dt*/,

'YYYY-MM-DD HH24:MI:SS')

AND (C.EMPLOYEE_STATUS = 1 OR

C.EMPLOYEE_STATUS = 0 AND

C.PAUSE_DATE >=

TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS') OR

NVL(C.PAUSE_DATE, C.UNREG_DATE) >=

TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS'))) C,

ODS.BAS_TAB_COMPANY_FJYD B

WHERE B.COMPANY_ID = C.COMPANY_ID

AND B.END_DATE = TO_DATE('3000-12-31', 'YYYY-MM-DD')

AND B.REG_DATE <

TO_DATE('2010-01-24 00:00:00' /*:v_end_dt*/, 'YYYY-MM-DD HH24:MI:SS')

AND (B.COMPANY_STATUS = 1 OR

B.COMPANY_STATUS = 0 AND

B.PAUSE_DATE >= TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS') OR

NVL(B.PAUSE_DATE, B.UNREG_DATE) >=

TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS'))

---4813行

SELECT COUNT(DISTINCT B.COMPANY_ID)

FROM ODS.BAS_TAB_COMPANY_FJYD B, ODS.BAS_TAB_EMPLOYEE_FJYD C

WHERE C.COMPANY_ID = B.COMPANY_ID

AND B.END_DATE = TO_DATE('3000-12-31', 'YYYY-MM-DD')

AND B.REG_DATE <

TO_DATE('2010-01-24 00:00:00' /*:v_end_dt*/, 'YYYY-MM-DD HH24:MI:SS')

AND (B.COMPANY_STATUS = 1 OR

B.COMPANY_STATUS = 0 AND

B.PAUSE_DATE >= TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS') OR

NVL(B.PAUSE_DATE, B.UNREG_DATE) >=

TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS'))

AND C.END_DATE = TO_DATE('3000-12-31', 'YYYY-MM-DD')

AND C.REG_DATE <

TO_DATE('2010-01-24 00:00:00' /*:v_end_dt*/, 'YYYY-MM-DD HH24:MI:SS')

AND (C.EMPLOYEE_STATUS = 1 OR

C.EMPLOYEE_STATUS = 0 AND

C.PAUSE_DATE >= TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS') OR

NVL(C.PAUSE_DATE, C.UNREG_DATE) >=

TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS'));

--4813行.

SELECT COUNT(DISTINCT B.COMPANY_ID)

FROM (SELECT *

FROM ODS.BAS_TAB_EMPLOYEE_FJYD C

WHERE C.END_DATE = TO_DATE('3000-12-31', 'YYYY-MM-DD')

AND C.REG_DATE < TO_DATE('2010-01-24 00:00:00' /*:v_end_dt*/,

'YYYY-MM-DD HH24:MI:SS')

AND (C.EMPLOYEE_STATUS = 1 OR

C.EMPLOYEE_STATUS = 0 AND

C.PAUSE_DATE >=

TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS') OR

NVL(C.PAUSE_DATE, C.UNREG_DATE) >=

TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS'))) C,

ODS.BAS_TAB_COMPANY_FJYD B

WHERE B.COMPANY_ID = C.COMPANY_ID(+)

AND B.END_DATE = TO_DATE('3000-12-31', 'YYYY-MM-DD')

AND B.REG_DATE <

TO_DATE('2010-01-24 00:00:00' /*:v_end_dt*/, 'YYYY-MM-DD HH24:MI:SS')

AND (B.COMPANY_STATUS = 1 OR

B.COMPANY_STATUS = 0 AND

B.PAUSE_DATE >= TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS') OR

NVL(B.PAUSE_DATE, B.UNREG_DATE) >=

TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS'))

--8441行

SELECT COUNT(DISTINCT B.COMPANY_ID)

FROM ODS.BAS_TAB_COMPANY_FJYD B, ODS.BAS_TAB_EMPLOYEE_FJYD C

WHERE C.COMPANY_ID(+) = B.COMPANY_ID

AND B.END_DATE = TO_DATE('3000-12-31', 'YYYY-MM-DD')

AND B.REG_DATE <

TO_DATE('2010-01-24 00:00:00' /*:v_end_dt*/, 'YYYY-MM-DD HH24:MI:SS')

AND (B.COMPANY_STATUS = 1 OR

B.COMPANY_STATUS = 0 AND

B.PAUSE_DATE >= TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS') OR

NVL(B.PAUSE_DATE, B.UNREG_DATE) >=

TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS'))

AND C.END_DATE = TO_DATE('3000-12-31', 'YYYY-MM-DD')

AND C.REG_DATE <

TO_DATE('2010-01-24 00:00:00' /*:v_end_dt*/, 'YYYY-MM-DD HH24:MI:SS')

AND (C.EMPLOYEE_STATUS = 1 OR

C.EMPLOYEE_STATUS = 0 AND

C.PAUSE_DATE >= TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS') OR

NVL(C.PAUSE_DATE, C.UNREG_DATE) >=

TO_DATE('2010-01-23 00:00:00' /*:v_start_dt*/,

'YYYY-MM-DD HH24:MI:SS'));

--4813行,和非外连接的结果集相同.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值