一.with as的含義
with as短語,也叫做子查詢部分(subquery factoring),可以讓你做很多事情,定義乙個sql片斷,該sql片斷會被整個sql語句所用到。有的時候,是為了讓sql語句的可讀性更高些,也有可能是在union all的不同部分,作為提供資料的部分。
特別對於union all比較有用。因為union all的每個部分可能相同,但是如果每個部分都去執行一遍的話,則成本太高,所以可以使用with as短語,則只要執行一遍即可。如果with as短語所定義的表名被呼叫兩次以上,則優化器會自動將with as短語所獲取的資料放入乙個temp表裡,如果只是被呼叫一次,則不會。而提示materialize則是強制將with as短語裡的資料放入乙個全域性臨時表裡。很多查詢通過這種方法都可以提高速度;
二 .merge into:判斷b表和a表是否滿足on中條件,如果滿足則用b表去更新a表,如果不滿足,則將b表資料插入a表
merge
into
a_merge a using (
select
b.aid,b.
name
,b.year
,b.city
from
b_merge b) c
on(a.id=c.aid)
when
matched
then
update
seta.
name
=c.name
where
c.city !=
'江西'
when
notmatched
then
insert
(a.id,a.
name
,a.year
) values
(c.aid,c.
name
,c.year
) where
c.city=
'江西'
; commit
; 三.
insert into select
insert into table_name_new(column1,column2...) select column1,column2... from table_name_old
sql備忘記錄
spark sql 當前日期 current date 顯示當前日期 年月日時分秒 year,month,day,hour,minute,second 例 year 2018 09 20 2018 第幾周,第幾天 weekofyear,dayofyear weekofyear x xx xx mys...
C 學習 備忘記錄 二
1 malloc free 與 new delete的區別 首先malloc free 屬於c的一組庫函式,new delete 屬於c 的一組運算子。功能都是開闢和釋放記憶體空間。但是區別在於。new 和delete運算子 在開闢空間的時候會呼叫類的建構函式和析構函式。而malloc free 則...
備忘 Ubuntu忘記密碼
1.重新啟動系統,按esc鍵進入boot menu,選擇advanced options for ubuntu,按下 enter 進入,選擇recovery mode,注意這時候不要按下回車鍵。2.按下 e 鍵進入命令編輯狀態,到 linux boot vmlinuz ro recovery nom...