Oracle 兩種高階查詢總結

2021-08-15 09:11:47 字數 2250 閱讀 8450

一.case when then else end條件控制查詢

1.簡單case函式用法

select id,stu_name 

case when score >=90 then '優秀'

when score>=75 and score<90 then '良好'

when score>=60 and score<75 then '及格'

else '不及格' end result

from student;

select grade,count(case when *** = 1 then 1 else null end) 男生數,

count(case when *** = 2 then 1 else null end) 女生數

from student group by grade;

2.case搜尋函式

select t2.*,t1.* 

from t1,t2

where (case when t2.type = 'a' and t1.name like '%海哥' then 1

when t2.type <> 'a' and t1.name not like '%海哥' then 1

else 0

end) = 1

select 

case when salary <=2000 then '低收入'

when salary >2000 and salary<=4000 then '溫飽收入'

when salary >4000 and salary <8000 then '小康收入'

when salary >8000 and salary <12000 then '中產收入'

else '高等收入' end salary_level,

count(1) from employee

group by

case when salary <=2000 then '低收入'

when salary >2000 and salary<=4000 then '溫飽收入'

when salary >4000 and salary <8000 then '小康收入'

when salary >8000 and salary <12000 then '中產收入'

else '高等收入' end;

需要注意的問題,case函式只返回第乙個符合條件的值,剩下的case部分將會被自動忽略

二.遞迴查詢

1.查詢id=20178900的所有直屬子節點,所有後代(prior 後接子節點,start with 開始的地方就是根節點)

select a.id,a.mc,a.code from village a where 

a.code in (select id from city s start with id='20178900' connect by s.code = prior s.id)

and a.status = '1' and mc like '%朱家莊%' order by a.time desc ,a.id desc;

2.查詢id=20178900的所有直屬父節點,所有祖宗(prior 後接父節點,start with 開始的地方就是根節點)

select a.id,a.mc,a.code from village a where 

a.code in (select id from city s start with id='20178900' connect by prior s.code = s.id)

and a.status = '1' and mc like '%朱家莊%' order by a.time desc ,a.id desc;

總結:這兩條語句之間的區別在於prior關鍵字的位置不同,所以決定了查詢的方式不同.當parent = prior id時,資料庫會根據當前的id迭代出parent與該id相同的記錄,所以查詢的結果是迭代出了所有的子類記錄;而prior parent = id時,資料庫會根據當前的parent來迭代出與當前的parent相同的id的記錄,所以查詢出來的結果就是所有的父類結果.

Oracle兩種高階查詢總結(例項講解)

一.case when then else end條件控制查詢 1.簡單case函式用法 select id,stu name case when score 90 then 優秀 when score 75 and score 90 then 良好 when score 60 and score ...

oracle兩種認證方式總結

oracle 資料庫通過 sqlnet.ora 檔案中的引數 sqlnet.authentication services,引數檔案中的 remote login passwordfile 和口令檔案 pwdsid.ora 三者協同作用實現身份認證 sqlnet.authentication ser...

oracle兩種認證方式總結

oracle 資料庫通過 sqlnet.ora 檔案中的引數 sqlnet.authentication services,引數檔案中的 remote login passwordfile 和口令檔案 pwdsid.ora 三者協同作用實現身份認證 sqlnet.authentication ser...