一般的なSQLリライト

テーブル構造

SQL> DESC SCOTT.EMP
名前タイプNULLデフォルトコメント
-------- ------------ -------- ------- ---- ----
EMPNO NUMBER(4)Y
ENAME VARCHAR2(10)Y
JOB VARCHAR2(9)Y
MGR NUMBER(4)Y
HIREDATE日付Y
SAL NUMBER(7,2)Y
COMM NUMBER(7,2)Y
DEPTNO NUMBER( 2)Y

SQL> DESC SCOTT.DEPT
名前タイプNULLデフォルトコメント
------ ------------ -------- ------- ------ -
DEPTNO NUMBER(2)
DNAME VARCHAR2(14)Y
LOC VARCHAR2(13)Y

セミジョイン

SCOTT.EMP aから選択*

ここDEPTNO(SCOTT.DEPT B a.deptno = b.deptnoからDEPTNOを選択)で

同値

SCOTT.EMP aから選択*

(a.deptno = b.deptno SCOTT.DEPT Bから1を選択する)場合が存在します

同値

SCOTT.EMPから選択*、(SCOTT.DEPTからDEPTNOを選択)B

どこa.deptno = b.deptno

 

アンチ結合

SCOTT.EMP aから選択*

ここDEPTNOない(SCOTT.DEPT B a.deptno = b.deptnoからDEPTNOを選択)で

同値

SCOTT.EMP aから選択*

ここで、存在しない(a.deptno = b.deptno SCOTT.DEPT Bから1を選択)

同値

SCOTT.EMP左から*選択SCOTT.DEPT Bに参加

 

 

スカラーのクエリ

(a.deptno = b.deptno SCOTT.DEPT Bから選択DNAME)ENAMEを選択
SCOTT.EMP aから
場所EMPNO = 7499

同値

ENAMEを選択し、dnameの
SCOTT.EMP左からはSCOTT.DEPTに参加します

a.deptno = b.deptnoに

どこEMPNO = 7499

 

表繰り返さお問い合わせ

SCOTT.EMPからENAMEを選択

ここで、(DEPTNOによってSCOTT.EMPグループから選択最大(EMPNO))でEMPNO

同値

(からENAMEを選択

ENAMEを選択し、

EMPNO、

最大(EMPNO)を超える(DEPTNOによってパーティション)max_empno

 SCOTT.EMPから

)ここでEMPNO = max_empno

 

 

SELECT * FROM(
SCOTT.EMPから選択数(*)ここで、DEPTNO = 10)、

SELECT COUNT(*)SCOTT.EMPからここDEPTNO = 20)

同値

選択
和(ケースDEPTNO = 10、次いで1端)、
和(ケースDEPTNO = 20次に、1エンド)
SCOTT.EMPから

 

SQLクエリは、定期的な身体に書き換えることができます。

 

おすすめ

転載: www.cnblogs.com/muzisanshi/p/11842890.html