我们来自五湖四海,不为别的,只因有共同的爱好,为中国互联网发展出一分力!
领航时时彩重庆版

时时彩开户奖结果:批量更新sql语句 批量update sql

2014年12月22日01:16 阅读: 27215 次

领航时时彩重庆版 www.9nwl5.cn 标签: 批量更新sql语句 批量update s

批量更新表时,update一个表的列时,需要依赖另外的表,这种依赖可以是where条件子句,也可以要update的field的值依赖另外的表
   通常有两种做法
   1.使用存储过程
   2.在程序代码里逐条循环执行
这里给出一种更高效、简洁的做法,批量更新SQL ,一句SQL就可以替代麻烦的循环过程,有MS SQLServer、Oracle、DB2下的写法
--关键点:t4和t1是同一个table,primary key肯定也是同一个,
--并以它进行关联,这样在 select语句里即可引用到要update的表的fields 
UPDATE Table1 AS t1 
SET (Field1,Field2) = (SELECT Field21, Field22 
                       FROM Table2 t2 
                            INNER JOIN Table3 t3 
                                 ON t3.Field31 = t2.Field23 
                            INNER JOIN Table4 t4 
                                 ON t3.Field32 = t4.Filed41 
                       WHERE t2.Field24 >= '' 
                                      AND t1.fId = t4.fId); 
----------------------------MS SQLServer --------------------------------------
UPDATE t1 
SET Field1 = Field21, Field2 = Field22 
FROM Table2 t2 
         INNER JOIN Table3 t3 
              ON t3.Field31 = t2.Field23 
         INNER JOIN Table4 t4 
              ON t3.Field32 = t4.Filed41 
WHERE ((t2.Field24 >= '') 
                  AND t1.fId = t4.fId); 
----------------------------Oracle --------------------------------------------
UPDATE Table1 t1 
SET (Field1,Field2) = (SELECT Field21, Field22 
                       FROM Table2 t2 
                            INNER JOIN Table3 t3 
                                 ON t3.Field31 = t2.Field23 
                            INNER JOIN Table4 t4 
                                 ON t3.Field32 = t4.Filed41 
                       WHERE ((t2.Field24 >= '') 
                                 AND t1.fId = t4.fId)) 
WHERE EXISTS (SELECT Field21, Field22 
              FROM Table2 t2 
                   INNER JOIN Table3 t3 
                        ON t3.Field31 = t2.Field23 
                   INNER JOIN Table4 t4 
                        ON t3.Field32 = t4.Filed41 
              WHERE ((t2.Field24 >= '') 
                               AND t1.fId = t4.fId)); 
---------------------------------DB2 ------------------------------------------
UPDATE Table1 AS t1 
SET (Field1,Field2) = (SELECT Field21, Field22 
                       FROM Table2 t2 
                            INNER JOIN Table3 t3 
                                 ON t3.Field31 = t2.Field23 
                            INNER JOIN Table4 t4 
                                 ON t3.Field32 = t4.Filed41 
                       WHERE ((t2.Field24 >= '') 
                                         AND t1.fId = t4.fId)) 
WHERE EXISTS (SELECT Field21, Field22 
              FROM Table2 t2 
                   INNER JOIN Table3 t3 
                        ON t3.Field31 = t2.Field23 
                   INNER JOIN Table4 t4 
                        ON t3.Field32 = t4.Filed41 
              WHERE ((t2.Field24 >= '') 
                                AND t1.fId = t4.fId));
分享到: 更多
©2019 安全焦点 版权所有.

  • 这些“难民”大部分好吃懒做,无一技之长,犯罪率又高,你要接回去就噹祖宗供着吧。[哈哈] 2019-04-23
  • 铜梁这位30岁小伙抱上吉他骑着摩托去北极过生! 2019-04-23
  • 2018年世界杯防骗宝典!拒绝和骗子一起狂欢! 2019-04-16
  • [微笑]其实很简单就能破这个局:立法禁止通过房地产二次交易获利,炒房就会被杜绝,炒房一旦被杜绝,房价就会受正常供需关系影响波动在合理范围内。 2019-04-16
  • 中国人打仗?被逗了。独生子一代、捧在手里长大的90后00后、站在甲板上飒爽英姿、硝烟战火血肉横飞的场景、会失去行动能力的。这不是耸人听闻。 2019-04-14
  • 乌鲁木齐市水磨沟区开建两座立体停车库 2019-04-14
  • 吕洪蕾:网络信息技术在干部工作中的运用研究 2019-04-04
  • 聚焦中央经济工作会议 2019-03-30
  • 沈杰:在北京打拼的“90后”台湾律师 2019-03-30
  • 法国总统马克龙首次访华 法国居民期待成果 2019-03-25
  • 【新媒体矩阵】长城编小厨 2019-03-25
  • 1949年刚刚进入北平的人民日报校对科夜班工作场面 2019-03-22
  • 江西省“放管服”改革再出实招 2019-03-21
  • 让“毒跑道”绝迹 内蒙古各方联手共同监管校园跑道 2019-03-20
  • 宁夏石嘴山支队隆重举行退伍老兵欢送仪式 2019-03-19
  • 466| 778| 477| 1| 531| 56| 862| 473| 295| 556|