update的关联表批量更新

在更新一批记录时使用如下语句:

update publish set contentid=
(select top 1 articles.contentid from articles
where articles.articleID=publish.objectID
)
--where publish.objectid=@objectID

前提是:publish表的记录不能大于Article的记录,即要插入的目标表中示能插入null,否则会提示错 误。

全来没办法,改为游标:

SET NOCOUNT ON
DECLARE @contentID int
declare @objectID int
declare @countnumber int
set @countnumber=0
DECLARE publish_cursor CURSOR FOR
  select a.contentid,a.articleID from publish p
  inner join articles a on a.articleID=p.objectID
  where objectid>0 and p.contentid<> a.contentid
  and (p.cellid=160 or cellid=138)
  OPEN publish_cursor

  FETCH NEXT FROM publish_cursor
  INTO @contentID,@objectID

    WHILE @@FETCH_STATUS = 0
    BEGIN
    print @contentID
    print @objectID

      --修改记录
      update publish set ContentID=@contentID where objectid=@objectID
      --修改结束
      FETCH NEXT FROM publish_cursor into @contentID,@objectID

    END
  CLOSE publish_cursor
  DEALLOCATE publish_cursor

GO

select p.publishid,p.contentid,a.contentid,p.objectID,a.articleID from publish p
inner join articles a on a.articleID=p.objectID
where objectid>0 and p.contentid<> a.contentid
and (p.cellid=160 or cellid=138)
go

-- update publish set contentid=0 where (cellid=160 or cellid=138)
-- select * from publish p where ( p.cellid=160 or cellid=138)

在没有更好的办法呢?

其实还可以这样:

update publish set contentid= a.contentid
from articles a inner join publish p on p.objectID=a.articleID
where cellid=138

-- select * from publish where cellid=138
-- update publish set contentid=0 where cellid=138

时间: 2024-11-08 17:16:12

update的关联表批量更新的相关文章

DreamweaverMX实现网站批量更新

dreamweaver 在Dreamweaver 4.0中,我们就已接触了模板与库的概念,知道它们是批量生成风格类似的网页的好工具.如今在Dreamweaver MX(以下简称DW MX)中,模板与库的功能得到了进一步细化与加强,尤其是实现关联网页自动更新的特点,使得模板与库成为DW MX的一大亮色. 1.首先我们来看看模板的应用,与Dreamweaver 4.0不同的是,DW MX把模板的操作拓展到了"Modify"与"Insert"两个菜单下.同时,在 &quo

用Dreamweaver MX实现网站批量更新

dreamweaver     在Dreamweaver 4.0中,我们就已接触了模板与库的概念,知道它们是批量生成风格类似的网页的好工具.如今在Dreamweaver MX(以下简称DW MX)中,模板与库的功能得到了进一步细化与加强,尤其是实现关联网页自动更新的特点,使得模板与库成为DW MX的一大亮色.     1.首先我们来看看模板的应用,与Dreamweaver 4.0不同的是,DW MX把模板的操作拓展到了"Modify"与"Insert"两个菜单下.同

如何用Dreamweaver实现网站批量更新

在Dreamweaver 4.0中,我们就已接触了模板与库的概念,知道它们是批量生成风格类似的网页的好工具.如今在Dreamweaver MX(以下简称DW MX)中,模板与库的功能得到了进一步细化与加强,尤其是实现关联网页自动更新的特点,使得模板与库成为DW MX的一大亮色. 1.首先我们来看看模板的应用,与Dreamweaver 4.0不同的是,DW MX把模板的操作拓展到了"Modify"与"Insert"两个菜单下.同时,在 "File"

ORACLE中如何批量更新关联表

在SQL SERVER中,关联表的批量更新,可以参看这里: http://www.cnblogs.com/downmoon/archive/2007/12/29/1019832.html Oracle下没找到好的语法,临时用这个: update employee set hrdeptname= (select d.DEPTNAME from DEPARTMENT d where ROWNUM=1 and d.deptID=employee.hrdeptID ) 对应的SQL Server语法:

SQLServer批量更新两个关联表数据的方法_MsSql

本文实例讲述了SQLServer批量更新两个关联表数据的方法.分享给大家供大家参考,具体如下: 方式1: UPDATE a SET WtNo=b.NO from WT_Task a INNER JOIN WT_BasicInformation b ON a.WtId=b.ID; 方式2: UPDATE a SET a.WtNo=b.NO FROM WT_Task a,WT_BasicInformation b WHERE a.WtId=b.ID; 希望本文所述对大家SQL Server数据库程序

SQLServer批量更新两个关联表数据的方法

本文实例讲述了SQLServer批量更新两个关联表数据的方法.分享给大家供大家参考,具体如下: 方式1: UPDATE a SET WtNo=b.NO from WT_Task a INNER JOIN WT_BasicInformation b ON a.WtId=b.ID; 方式2: UPDATE a SET a.WtNo=b.NO FROM WT_Task a,WT_BasicInformation b WHERE a.WtId=b.ID; 希望本文所述对大家SQL Server数据库程序

sql server 2005 select update 复杂计算 批量更新 悬赏100分

问题描述 sql server 2005 select update 复杂计算 批量更新 悬赏100分 sql server 2005 select update 复杂计算 批量更新 表结构如上图:ID,日期,代码,开盘,最高,最低,振幅3 求:前三日的振幅,并批量更新. 算法:代码相同,按日期排序,向前取三条,从最高里面找到最大的数,从最低里面找到最小的数. (最高 - 最低) / 开盘 = 振幅.开盘是当前行固定向前数三行的开盘值. 以更新第4条为例: (9 - 1) / 1 = 第4条的振

mysql 有就插入没有就更新 on DUPLICATE key update批量更新

on DUPLICATE key update批量更新 mysql有个批量更新的方法,mssql则无此命令用法,mysql的这个方法可以用来批量更新,更为强大的是:如果参数已存在则更新,如果数据库里没有这个参数就插入新的. 举例 insert into xinhuazidian (a, b, c) VALUES ('aaa','bbb','lao8.org'),  ('aaa2','bbb2','m.lao8.org') on DUPLICATE key update b=VALUES(b),

如何用不同的sqlDataAdapter 批量更新同一个数据表

问题描述 问:从一个数据库访问类的静态方法中查询返回一个表,并绑定到dataGridView中,在dataGridView中加.删.改数据后怎么一次性批量更新数据到数据库...不能访问数据库访问类中的初始sqlDataAdapter...我没积分不好意思...还是请求高手的帮助(希望能有实例).... 解决方案 解决方案二:用update()啊