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

批量更新sql语句 批量update sql

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

标签: 批量更新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 安全焦点 版权所有.