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 ...