zoukankan      html  css  js  c++  java
  • SqlServer 利用临时表批量添加&&修改数据库表中的数据

    .简单的创建临时表

    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;
  • 相关阅读:
    5.1.5 JunkMail Filter
    POJ1067 取石子游戏 跪跪跪,很好的博弈论
    USACO Section 3.2 Magic Squares (msquare)
    5.1.1 A Bug's Life
    USACO Section 3.3 Riding The Fences (fence)
    USACO Section 3.1 Stamps (stamps)
    5.2.7 Entropy
    USACO Section 3.1 AgriNet (agrinet)
    5.1.8 How Many Answers Are Wrong
    4.3.6 N皇后问题
  • 原文地址:https://www.cnblogs.com/netlock/p/15251799.html
Copyright © 2011-2022 走看看