with與樹查詢的使用

2021-09-06 02:04:00 字數 2072 閱讀 7461

2023年12月23日 12:55:46

with

查詢的使用

with 查詢的作用:就是把一大堆重複用到的sql語句放在with as 裡面,取乙個別名,後面的查詢就可以用它

這樣對於大批量的sql語句起到乙個優化的作用

create table t2(id int);   

create table t3(id int);   

insert into t2 values(1);  

insert into t2 values(2);  

insert into t3 values(3);  

commit;   

with  

sql1 as (select * from t2),  

sql2 as (select * from t3)  

select * from t2  

union  

select * from t3;   

error at line 3:  

ora-32035:不可引用在with子句中定義的查詢名

所以,如果定義了sql1和sql2,就得用它們

如下:with  

sql1 as (select * from t2),  

sql2 as (select * from t3)  

select * from sql1  

union  

select * from sql2;   

with子句中的where使用  

with  

sql1 as (select * from t2),  

sql2 as (select * from t3)  

select * from sql1  

union  

select * from sql2  

where id in(2,3);   

輸出結果認為1,2,3.

where條件要徵對每個select子句

with  

sql1 as (select * from t2),  

sql2 as (select * from t3)  

select * from sql1  

where id=3

union  

select * from sql2  

where id=3;  

樹查詢的使用

--層次查詢

create table tree_test (

id    number,

name varchar2(100 byte),

pid   number   default 0

);select * from tree_test

插入測試資料:

insert into tree_test(id,name,pid) values('1','10','0');

insert into tree_test(id,name,pid) values('2','11','1');

insert into tree_test(id,name,pid) values('3','20','0');

insert into tree_test(id,name,pid) values('4','12','1');

insert into tree_test(id,name,pid) values('5','121','2');  

--從根往節點找

select * from tree_test start with id = 1 connect by prior id = pid

--從節點往根找

select * from tree_test start with id = 5 connect by id = prior pid

--注意樹查詢時多個條件下,where條件在樹結構查詢之後

select ... from tablename

where 條件3

start with 條件1

connect by 條件2;

靜態最優查詢與次優查詢樹

問題描述 給出n nn個元素的權值w i w i w i 問如何構造查詢樹使得查詢效率最高?靜態最優查詢樹 將n個元素的權值有序排列,設定opt imal i,j optimal i,j optima l i,j 表示區間 i,j i,j i,j 之間的元素構造的最小ph值的子樹。易知有關係 o p...

樹的區間查詢與更新(線段樹)

原題 include include include include include include include include using namespace std define clr x memset x,0,sizeof x define ll long long define typ...

2 3查詢樹的插入與刪除

本片部落格前面部分擷取自演算法 第4版 定義 要判斷乙個鍵是否存在樹中,先將它和根節點中的鍵比較,如果它和其中任意乙個相等,查詢命中 否則就根據比較的結果找到指向相應區間的連線,並在其指向的子樹中遞迴地繼續查詢,如果找到了空連線上,查詢未命中。插入之前,先要對2 3樹進行一次未命中的查詢 1 向2 ...