zoukankan      html  css  js  c++  java
  • 关联表的批量更新(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

    以上适用于SQL SERVER,如果是Oracle,可以试用以下方法:

    http://www.cnblogs.com/downmoon/archive/2012/11/05/2755245.html

    邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
    助人等于自助!  3w@live.cn
  • 相关阅读:
    gulp serve 报错 gulp.ps1
    Jquery选择器
    Jquery动画
    js 雪花
    h5 偏门小方法
    HTML基础
    HTML5介绍
    JavaScript String 简易版烟花
    JavaScript Select和Option列表元素上下左右移动
    H5缓存-Manifest
  • 原文地址:https://www.cnblogs.com/downmoon/p/1019832.html
Copyright © 2011-2022 走看看