想通过一条SQL语句达到更新多条记录的目的
如有一个表table
有两列
A      B
----------
1    
2
3
4达到这样
A      B
----------
1      a
2      b
3      c
4      d
但是a,b,c,d的值是有规律的,他存放在一个数组中,比如是B[4]:B[0]=a,B[1]=b,B[2]=c,B[3]=d
A表中的1234也是有规律的,他也是一个数组,如A[4]........
如果用程序中循环来做的很简单,只要把B[]中数据循环放到B列中
int i = 0
for i<4
{
update table set B = B[i] where A = A[i]
i++
}
如何用SQL来完成?

解决方案 »

  1.   

    update 表 
        set B =case when A='1' THEN  'a'        
                    when A='2' THEN    'b'      
                    when A='3' THEN    'c'   
         when A='4' THEN    'c'  END
        
     
      

  2.   

    a,b,c,d和1,2,3,4都是变量
    不是固定值,类似存放在数组里面的值一样
    int   i   =   0 
    for   i <4 //4代表数组长度,长度不定,具体看数组情况

    update   table   set   B   =   B[i]   where   A   =   A[i] 
    i++ 
      

  3.   

    那就写存储过程来更新就可以了~
    把 '1','2','3','4',a,b,c,d 都从数组(表)中取出来,然后传参数来更新,主要还是这样来对应就可以了
    存储过程就不写了哈~呵呵~~留给下面的
      

  4.   

    把a,b,c,d 插入一个临时表内
    select id=identity(int,1,1),*  into #t from tupdate 表
    set B=t2.b
    from 表 t1 left join #t t2
    on t1.id=t2.id
      

  5.   

    3楼,请问类似那样的存储过程该怎么写?
    4楼,我对这句select id=identity(int,1,1),*  into #t from t不是很理解
    能具体解释一下吗?谢了
      

  6.   

    如果把a,b,c,d....插入一个表内,是不是也很麻烦
    因为a,b,c,d....有多少并不一定,由程序中得到的结果决定的
    暂时决定把结果存在数组中去,但是这个数组比如B[i],我怎么把里面的内容用一个SQL语句来插入临时表中去?
      

  7.   

    我认为还是小鸟~提供的方式最简单
    只要用循环动态生成update语句就可以了
    谢谢你们