oracle的補充知識點

2022-08-02 00:15:14 字數 1959 閱讀 2510

1.union all 與union

union和union all的區別是,union會自動壓縮多個結果集合中的重複結果,而union all則將所有的結果全部顯示出來,不管是不是重複。

2.intersect:對兩個結果集進行交集操作,不包括重複行,同時進行預設規則的排序;

minus:對兩個結果集進行差操作,不包括重複行,同時進行預設規則的排序。

3.with as

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

with a as (select dummy from dual),

b as (select dummy from dual)

select a.dummy,b.dummy from a,b 

where a.dummy = b.dummy

4.connect by [條件2] start with [條件3]

大致寫法:select * from some_table [where 條件1] connect by [條件2] start with [條件3]; 

其中 connect by 與 start with 語句擺放的先後順序不影響查詢的結果,[where 條件1]可以不需要。

[where 條件1]、[條件2]、[條件3]各自作用的範圍都不相同:

示例: 

假如有如下結構的表:some_table(id,p_id,name),其中p_id儲存父記錄的id。

select * from some_table t where t.id!=123 connect by prior t.p_id=t.id and t.p_id!=321 start with t.p_id=33 or t.p_id=66;

對prior的說明: 

prior存在於[條件2]中,可以不要,不要的時候只能查詢到符合「start with [條件3]」的記錄,不會在尋找這些記錄的子節點。

要的時候有兩種寫法:connect by prior t.p_id=t.id 或 connect by t.p_id=prior t.id,前一種寫法表示採用自上而下的搜尋方式(先找父節點然後找子節點),

後一種寫法表示採用自下而上的搜尋方式(先找葉子節點然後找父節點)。

prior放的左右位置決定了檢索是自底向上還是自頂向下.很明顯以上的sql選擇了自底向上,所以最終得到了根節點。

select num1,num2,level 

from carol_tmp 

start with num2=1008 

connect bynum2=prior num1order by level desc;(1008向上)

select num1,num2,level 

from carol_tmp 

start with num2=1008 

connect byprior  num2= num1order by level desc;(1008向下)

5.根據時間排重,取時間最大的值

select t.*

from (select a.*, row_number() over(partition by 需要排重的字段 order by 時間 desc) rw

row_number() over (partition by col1 order by col2) 表示根據col1分組,在分組內部根據 col2排序,而此函式計算的值就表示每組內部排序後的順序編號(組內連續的唯一的)

正則知識點補充

1.與正規表示式有關的字串物件的方法 string.replace pattern,string 替換在正規表示式查詢中找到的文字。string.search pattern 通過正規表示式查詢相應的字串,只是判斷有無匹配的字串。如果查詢成功,search 返回匹配串的位置,否則返回 1。strin...

property知識點補充

1 synthesize和 dynamic作用 1 property有兩個對應的詞,乙個是 synthesize,乙個是 dynamic。如果 synthesize和 dynamic都沒寫,那麼預設的就是 syntheszie var var 2 synthesize的語義是如果你沒有手動實現set...

DOM知識點補充

一 元素物件的屬性及自定義屬性的設定或獲取?物件.屬性 物件 屬性 物件.getattribute 屬性名 物件.setattribute 屬性名 屬性值 物件.removeattribute 屬性名 二 outerhtml 獲取當前元素物件及所有內容 innerhtml 設定或獲取當前元素物件內的...