当前位置:  数据库>sqlserver

批量更新关联表(oracle、sql server)

    来源: 互联网  发布时间:2014-08-29

    本文导语:  批量更新关联表(oracle、sql server),供大家学习参考。 在oracle中,目前未找到好的解决方法,暂时使用如下的方法:   代码示例: update employee  set hrdeptname= (select d.DEPTNAME from DEPARTMENT d where ROWNUM=1 and d.deptID=employee.hrdeptID ) SQL S...

批量更新关联表(oracle、sql server),供大家学习参考。
在oracle中,目前未找到好的解决方法,暂时使用如下的方法:
 

代码示例:
update employee  set hrdeptname=
(select d.DEPTNAME from DEPARTMENT d
where ROWNUM=1 and d.deptID=employee.hrdeptID
)

SQL Server语法:
 

代码示例:
Update employee set hrdeptname=d.DEPTNAME
from DEPARTMENT  d  inner join employee e  on e.HRDEPTID=d.DEPTID
where 1=1;

附:关联表的批量更新(SQL SERVER)

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

代码示例:
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

作者:3w@live.cn


    
 
 

您可能感兴趣的文章:

  • 带关联子查询Update语句更新数据的例子
  • 多表关联同时更新多条不同的记录方法分享
  • 国内哪里可以下载oracle8.1.7或更新版本
  • Oracle 2010年4月更新修复Oracle协作套件安全漏洞
  • Oracle 2010年7月更新修复Oracle Fusion中间件安全漏洞
  • oracle更新xml节点问题的一些细节
  • Oracle 2010年7月更新修复多个Oracle Database安全漏洞
  • Oracle 2010年7月更新修复Transportation Manager安全漏洞
  • Oracle 2010年7月更新修复Enterprise Manager Grid Control安全漏洞
  • jsp如何选择更新oracle的date字段
  • Oracle 2010年7月更新修复多个PeopleSoft安全漏洞
  • Oracle 2010年7月更新修复多个E-Business Suite安全漏洞
  • Oracle 2010年4月更新修复多个E-Business Suite安全漏洞
  • Oracle多表级联更新详解
  • ORACLE学习笔记-添加更新数据函数篇
  • 如何用不算很熟练的jsp,oracle,javascript,html,css等建设动态网站,要网页打开速度快、易于日常维护更新?
  • 利用可更新ResultSet的updateBinaryStream()可以把图片存到mySql数据库,却不能存到Oracle数据库,怎么办?
  • 为什么我用javabean更新不了数据库?javabean,oracle高手请进!!!!!高分相赠!!!在线等待中。。。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c#多线程更新窗口(winform)GUI的数据
  • Fedora 的更新包有必要更新么?
  • Windows7 更新操作步骤
  • ubuntu 更新信息存放位置?
  • Android 自动更新Demo
  • Cheney程序更新管理器
  • 怎么才能够更新数据库?
  • 关于linux 的项目更新问题??
  • Java 应用自动更新框架 Jupidator
  • jdbc可更新数据集问题,困扰我两日!!
  • 内存数据更新问题
  • centos5 今天的新的更新有必要吗?
  • Google自动更新程序 Omaha
  • 关于JTable自动更新数据的问题
  • 紧急求救!怎样用update更新指定的一行数据!
  • 如何监视数据变更,并及时更新显示好?
  • 下载的lINUX是有版本更新次数限制?
  • 关于文件更新日期(急)
  • 请问Ubuntu Linux 怎么实现离线更新呢?
  • libreoffice 更新问题!
  • 集群服务器下相同文件夹下文件同时更新


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3