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的說明:select num1,num2,levelprior存在於[條件2]中,可以不要,不要的時候只能查詢到符合「start with [條件3]」的記錄,不會在尋找這些記錄的子節點。
要的時候有兩種寫法:connect by prior t.p_id=t.id 或 connect by t.p_id=prior t.id,前一種寫法表示採用自上而下的搜尋方式(先找父節點然後找子節點),
後一種寫法表示採用自下而上的搜尋方式(先找葉子節點然後找父節點)。
prior放的左右位置決定了檢索是自底向上還是自頂向下.很明顯以上的sql選擇了自底向上,所以最終得到了根節點。
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 設定或獲取當前元素物件內的...