想通过一条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来完成?
如有一个表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来完成?
set B =case when A='1' THEN 'a'
when A='2' THEN 'b'
when A='3' THEN 'c'
when A='4' THEN 'c' END
不是固定值,类似存放在数组里面的值一样
int i = 0
for i <4 //4代表数组长度,长度不定,具体看数组情况
{
update table set B = B[i] where A = A[i]
i++
}
把 '1','2','3','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
4楼,我对这句select id=identity(int,1,1),* into #t from t不是很理解
能具体解释一下吗?谢了
因为a,b,c,d....有多少并不一定,由程序中得到的结果决定的
暂时决定把结果存在数组中去,但是这个数组比如B[i],我怎么把里面的内容用一个SQL语句来插入临时表中去?
只要用循环动态生成update语句就可以了
谢谢你们