SQL資料庫臨時表建立和臨時表拼接查詢

2021-10-05 12:24:05 字數 1548 閱讀 9506

當初由於資料庫設計的有些不合理,有平常的查詢很難達到想要的效果,就上網查詢了臨時表查詢,然後進行拼接

begin

–判斷臨時表是否存在刪除臨時儲存表

if object_id(『tempdb…#te***』) is not null

begin

drop table #te***;

end;

if object_id(『tempdb…#temp2』) is not null

begin

drop table #temp2;

end;

–第乙個臨時表

select bs_setmealuser.setmealuserid ,

bs_setmealuser.mobilenewsmealid ,

mm_mobilenewsmeal.newsnum

–將查詢的資料放入臨時儲存表

into #te*** --關鍵字,相當於把這一段的查詢結果放入這個關鍵字

from bs_setmealuser

join mm_mobilenewsmeal on bs_setmealuser.mobilenewsmealid = mm_mobilenewsmeal.mobilenewsmealid

where bs_setmealuser.userid = @userid

and bs_setmealuser.expiretime >= getdate()

and bs_setmealuser.mobilenewsmealid != 0;

–第二個臨時表

select  bs_setmealuse.setmealuserid ,

isnull(sum(bs_setmealuse.newsusenum), 0) as bbb

into #temp2--關鍵字,相當於把這一段的查詢結果放入這個關鍵字

from bs_setmealuse

join bs_setmealuser on bs_setmealuser.setmealuserid = bs_setmealuse.setmealuserid

where bs_setmealuse.isdelete = 0

and bs_setmealuser.userid = @userid

group by bs_setmealuse.setmealuserid;

select #te***.setmealuserid ,

#te***.mobilenewsmealid ,

#te***.newsnum ,

#temp2.setmealuserid ,

isnull(#temp2.bbb, 0) as bbb

from #temp2

–根據相同的setmealuserid 進行拼接

right join #te*** on #temp2.setmealuserid = #te***.setmealuserid

where isnull(#temp2.bbb, 0) < #te***.newsnum;

end;

資料庫建立臨時表

表名前使用乙個 號,臨時表是區域性的,使用兩個 號,臨時表是全域性的,在斷開連線後sql會自動刪除臨時表 create table a id int,name varchar 50 insert into a id,name values 1,123 select from a drop table...

資料庫表(臨時表)

oracle中的段 segment 是占用磁碟上儲存空間的乙個物件。儘管有多種型別,不過最常見的段型別如下 q 聚簇 cluster 這種段型別能儲存表。有兩種型別的聚簇 b 樹聚簇和雜湊聚簇。聚簇通常用於儲存多個表上的相關資料,將其 預聯結 儲存到同乙個資料庫塊上 還可以用於儲存乙個表的相關資訊。...

資料庫中建立臨時表

語法 create table albums artist char 30 album name char 50 media type int go該錶也可以使用下邊的命令來手動刪除 drop table albums go當使用者退出sql server 時該表也可以被自動地刪除如果你是在自態sq...