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