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

编程入门 行业动态 更新时间:2024-10-13 08:21:39

oracle <a href=https://www.elefans.com/category/jswz/34/1743024.html style=谓词是什么意思,oracle sql外连接的时候谓词的应用顺序是会影响结果的"/>

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行,和非外连接的结果集相同.

更多推荐

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

本文发布于:2024-03-09 02:52:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1723502.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:谓词   顺序   oracle   sql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!