.簡單的創建臨時表
drop table #tmp --刪除臨時表 --創建臨時表 create table #tmp ( ID VARCHAR(80) not null, PNAME VARCHAR(200) ) INSERT INTO #tmp(ID,PNAME) SELECT ID,CNAME as PNAME from ORG_DEPARTMENT; --把別的表數據存入臨時表 SELECT * FROM #tmp;--查詢臨時表數據 // 創建臨時表的另一種方式 drop table #tmpStudent select * into #tmpStudent from ES_NOTICE_TARGET select * from #tmpStudent
對復雜的創建臨時表 更新字段數據
BEGIN --開始 drop table #tmp --刪除臨時表 可以不要 看需求了 不能刪一個在建一個 是不是很影響效率 --創建臨時表 create table #tmp ( ID VARCHAR(80) not null, ZCOUNT VARCHAR(200), WCOUNT VARCHAR(200), YCOUNT VARCHAR(200) ) --找到別表數據據插入臨時表中 INSERT INTO #tmp(ID,ZCOUNT) SELECT NOTICE_ID AS ID,COUNT(DEPT_ID) AS ZCOUNT from ES_NOTICE_TARGET GROUP BY NOTICE_ID; --更新臨時表字段值 按條件更新 update #tmp set WCOUNT=(SELECT COUNT(READS_IS_OK) as WCOUNT from ES_NOTICE_TARGET where #tmp.ID=NOTICE_ID AND (READS_IS_OK='0' OR READS_IS_OK IS NULL) GROUP BY NOTICE_ID) where EXISTS(SELECT NOTICE_ID AS ID from ES_NOTICE_TARGET GROUP BY NOTICE_ID) update #tmp set YCOUNT=(SELECT COUNT(READS_IS_OK) as WCOUNT from ES_NOTICE_TARGET where #tmp.ID=NOTICE_ID AND READS_IS_OK='1' GROUP BY NOTICE_ID) where EXISTS(SELECT NOTICE_ID AS ID from ES_NOTICE_TARGET GROUP BY NOTICE_ID) SELECT * FROM #tmp; --查詢臨時表數據 END --結束 GO --go
修改原理
update 表名 set 表名.修改字段=導入進去的新表.字段 from 導進去的新表 where 導進去的新表.id=表名.id 表名→是我需要修改這里面表中的數據 表名.修改字段→是我最終目的需要修改的字段 導入進去的新表→是我根據需要修改的數據做一個excel表導入數據庫(強調這里導入進去的是一個新表),其中導入進去的數據根據我現有數據庫中表必須要有唯一的對應ID。
臨時表相關命令
判斷臨時表是否存在,存在則刪除
if OBJECT_ID('tempdb..#tempTable') IS NOT NULL begin DROP TABLE #temp_Table end
創建臨時表(' # '局部的臨時表僅在會話里邊, ' ## '全局的的臨時表)
create table #temp_Table(
字段1 約束條件,
字段2 約束條件,
...)
create table #tempTable(
字段1 約束條件,
字段2 約束條件,
...)
刪除臨時表和清空臨時表數據和約束
DROP table #temp_Table
truncate table #temp_Table
實例
create table #temp_Table( Id uniqueidentifier, Cid uniqueidentifier ) select * from #temp_Table; insert into #temp_Table(Id,Cid) select x.Id,m.Id as Cid from DeductionRecord x left join firstApproval y on x.PaperNo=y.ctrpaperNo left join outStockpaper z on x.PaperNo=z.paperNo left join WarehouseManagement m on y.destinationWarehouse=m.Id or z.outboundWarehouse=m.Id order by x.CreatedTime; update DeductionRecord set WarehouseId=w.Cid from #temp_Table w where w.Id=DeductionRecord.Id; DROP table #temp_Table;
