批量更新的sql语句写法

原创 2011年01月15日 13:52:00

--Table1字段:fId,Field1,Field2
--Table2字段:fId,Field21,Field22
UPDATE Table1  
SET Field1 = Field21, Field2 = Field22  
FROM Table2 t2  WHERE Table1.fId = t2.fId);

 

批量更新表时,update一个表的列时,需要依赖另外的表,这种依赖可以是where条件子句,也可以要update的field的值依赖另外的表  
   通常有两种做法  
   1.使用存储过程  
   2.在程序代码里逐条循环执行  
这里给出一种更高效、简洁的做法,批量更新SQL ,一句SQL就可以替代麻烦的循环过程,有MS SQLServer、Oracle、DB2下的写法  
--关键点:t4和t1是同一个table,primary key肯定也是同一个,  
--并以它进行关联,这样在 select语句里即可引用到要update的表的fields  
----------------------------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)); 

分享高性能批量插入和批量删除sql语句写法

在笔者的首篇博文(http://www.cnblogs.com/zhangql/archive/2008/09/26/1299289.HTML)中,有下面一段表述:       技术水平总能在扯皮...

分享高性能批量插入和批量删除sql语句写法

从it专家网看到一篇好文章,粘过来用下   我们这里讨论的只是普通sql语句如何写更高效,不考虑特殊的用文件中转等导入方式,毕竟在代码中调用sql语句或存储过程才更方便。   批量删除很简单,大...
  • yax405
  • yax405
  • 2013年07月18日 15:43
  • 456

Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例

如何用一条sql语句实现批量更新?mysql并没有提供直接的方法来实现批量更新,但是可以用点小技巧来实现。 复制代码 代码如下: UPDATE mytable SET myfield = CA...

批量更新数据库数据(SQL update select语句)

QL update select语句   最常用的update语法是: UPDATE SET = , SET =   www.2cto.com   如果我的更新值Value是从一条...

Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例

Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例

mysql导入CSV文件及JAVA读取CSV文件和MYSQL批量插入和更新及ibatis常用SQL语句

mysql 的load data local infile命令 11

使用SQL语句批量更新数据.rar

  • 2010年07月02日 09:33
  • 46KB
  • 下载

SQL语句教程 写法大全

  • 2013年10月25日 10:50
  • 1.34MB
  • 下载

mybatis常见问题处理:批量操作,传递多个参数,like语句写法等等

mybatis常见问题处理:批量操作,传递多个参数,like语句写法等等

Oracle Sql高效语句的写法诀窍

  • 2016年10月10日 11:51
  • 686KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:批量更新的sql语句写法
举报原因:
原因补充:

(最多只允许输入30个字)