oracle SQL查詢語句
SELECT LPAD(' ',(LEVEL-1)*3)||ename
FROM emp
START WITH ename='SMITH'
CONNECT BY PRIOR empno=mgr ;
SELECT ename
FROM emp
START WITH ename='SCOTT'
CONNECT BY PRIOR mgr=empno
ORDER BY LEVEL DESC ;
SELECT LPAD(' ',(LEVEL-1)*3)||ename
FROM emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno=mgr ;
你問的是ORACLE中層次樹狀查詢,START WITH 。。 CONNECT BY 用法。
START WITH 指明樹的起點。至于是找上級還是下級(也就是你問的),關鍵就在于PRIOR的用
法。PRIOR的意思是前一個。
比如:START WITH ename='SMITH'
CONNECT BY PRIOR empno=mgr ;
的意思:ename='SMITH'表示樹的起點,即第一行
CONNECT BY PRIOR empno=mgr 表示上一行員工的編號是當前行的管理者,即找SMITH的下屬。
START WITH ename='SCOTT'樹的起點,即第一行
CONNECT BY PRIOR mgr=empno 表示上一行員工的管理員編號是當前員工的編號,即找SCOTT的上級及間接上級。
oracle 的 sql語句查詢
以Oracle自帶的scott為例:
1、select *,* as mgrname,* from * t1,* t2,* d where *=* and *=*
2、select d.* from * d,(select rownum n, tt.* from (select count(*) c,deptno from * group by deptno order by c desc) tt)t where t.n=1 and *=*
3、select * from(select t.*,dense_rank()over (partition by deptno order by sal) r from * t where deptno=30) where r<=3
4、select * from(select t.*,rank()over (partition by n order by sal) r from (select '' as n,tt.* from * tt) t) where r between 5 and 10
有一個Oracle中的SQL查詢語句的問題
雙表查詢:簡單說了仔細的說如下(也是簡單,還是你學學吧)select A。
CD,B。ID from A,B用select 先選擇a表的cd字段 b表的ID做為,兩個表的查詢依據,查出兩個表中所有CD,ID 兩個字段的內容那個from后面的a,b指的要查的表。
后面一句where a。cd=b。
cd(+)ad。
。是條件,也就是說符合a表。
cd標準的b表中的id字值和cd字同時為11的列表值。在意如此。
總的來說,是查一個固定ID排序值,其中B。ID(+)=11不是結果,B。
CD(+) AND B。 ID(+) = 11加起來滿足a。
cd才是結果。而這里的b。
id(+)=11是指定查詢,(這里是獨立理解,因為你這句中還有一個條件為B。CD(+) 其它他和B。
ID(+) 意思一樣如果這樣寫A。CD = B。
ID(+)ANDB。CD(+) = 11是一樣的,之后一個等號后面的是限制范圍。
(語文沒學好,不會表達,不好意思,如果看到我這句之后感覺更迷湖了,就拿刀砍我吧)。
Oracle連接查詢和sql語句中的條件判斷有哪些
SELECT 1 UPLOAD, 0 SHENGJI, MR。
BUSI_ID, MASTER。PERSON_ID, MASTER。
ACNT_ID, MASTER。ID_NUM, MASTER。
NAME, MASTER。SEX, MR。
MIGRT_OUT_REGION, MR。OUT_OPERA_TIME, MR。
OUT_OPERA_ID, MR。IN_OPERA_TIME, MR。
MIGRATE_STATE, MR。MIGRT_IN_REGION, case when MR。
MIGRT_IN_REGION is null then '未選擇' else ARC。REGION_NAME end AS MIGRT_IN_REGION_NAME FROM ADPM_MIGRATE_CPA MASTER, ADPM_MIGRATE_INFO MR left join ADPM_REGION_CODE ARC on MR。
MIGRT_IN_REGION = ARC。REGION_CODE WHERE MASTER。
PERSON_ID = MR。PERSON_ID AND (MR。
MIGRATE_STATE = '10' OR MR。MIGRATE_STATE = '20' OR MR。
MIGRATE_STATE = '60'); SELECT 1 UPLOAD, 0 SHENGJI, MR。BUSI_ID, MASTER。
PERSON_ID, MASTER。ACNT_ID, MASTER。
ID_NUM, MASTER。 NAME, MASTER。
SEX, MR。MIGRT_OUT_REGION, MR。
OUT_OPERA_TIME, MR。OUT_OPERA_ID, MR。
IN_OPERA_TIME, MR。MIGRATE_STATE, MR。
MIGRT_IN_REGION, case when MR。MIGRT_IN_REGION is null then '未選擇' else ARC。
REGION_NAME end AS MIGRT_IN_REGION_NAME FROM ADPM_MIGRATE_CPA MASTER, ADPM_MIGRATE_INFO MR, ADPM_REGION_CODE ARC WHERE MASTER。 PERSON_ID = MR。
PERSON_ID AND (MR。MIGRATE_STATE = '10' OR MR。
MIGRATE_STATE = '20' OR MR。MIGRATE_STATE = '60') AND MR。
MIGRT_IN_REGION = ARC。 REGION_CODE(+);。
oracle 中的 sql語句查詢
1、
select emp.* from emp,(select deptno,avg(sal) avg1 from emp group by deptno)B where *=* and *>*1;
2、
select emp.*,*1 平均工資 from emp,(select deptno,avg(sal) avg1 from emp group by deptno)B where *=* and *>*1;
3、
select emp.* from emp,(select deptno,avg(sal) avg1 from emp group by deptno)B where *=*1;
4、
select A.*,B.* from
(select * from emp where empno=10)A,
(select * from emp where empno=(select mgr from emp where empno=10))B;
---
以上,希望對你有所幫助。
如何使用sql語句,查詢oracle的表注釋等信息
Oracle 下讀取表/字段的備注信息
Oracle 通過COMMENT ON TABLE / COMMENT ON COLUMN 追加表/字段的備注。
CREATE TABLE "MR_DEPT" (
"DEPT_ID" NUMBER NOT NULL ,
"PARENT_ID" NUMBER,
"DEPT_NAME" CHAR(20) NOT NULL ,
"STATUS" NUMBER DEFAULT 1 NOT NULL ,
PRIMARY KEY ("DEPT_ID")
);
COMMENT ON TABLE "MR_DEPT" IS '部門表';
COMMENT ON COLUMN "MR_DEPT"."DEPT_ID" IS '部門編號';
COMMENT ON COLUMN "MR_DEPT"."PARENT_ID" IS '上級部門編號';
COMMENT ON COLUMN "MR_DEPT"."DEPT_NAME" IS '部門名';
COMMENT ON COLUMN "MR_DEPT"."STATUS" IS '狀態';
備注加好以后,如何在查詢中檢索呢?
查詢表的備注信息
SELECT
TABLE_NAME,
TABLE_TYPE,
COMMENTS
FROM
USER_TAB_COMMENTS
WHERE
TABLE_NAME = 'MR_DEPT;
查詢字段的備注信息
SELECT
TABLE_NAME,
COLUMN_NAME,
COMMENTS
FROM
USER_COL_COMMENTS
WHERE
TABLE_NAME = 'MR_DEPT;
轉載請注明出處華閱文章網 » oraclesql語句查詢