.简单的创建临时表
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;