首页 新闻 会员 周边

同一张表,如何根据已处理有记录信息更新刚增加的记录的某些字段?

0
悬赏园豆:20 [已解决问题] 解决于 2009-11-10 19:30

题目可能取得不好,没说明白,请包涵。

详细是这样,有个表a,里面有3个字段,fCmpId,fProdNo和fProdId。

规则是fCmpId,fProdNo这两个字段决定fProdId,新增的记录中fProdId=0,需要程序根据之前的记录中的fCmpId,fProdNo和fProdId来更新新增的记录中的fProdId。

请问如何写sql语句比较好?

莫慌的主页 莫慌 | 初学一级 | 园豆:9
提问于:2009-11-09 13:59
< >
分享
最佳答案
0

1、分步完成

从数据库中返回上一条记录的三个字段值,计算出fProdId,然后直接插入就好了。

2、一步完成(嵌套查询,假设fProdId=上一条记录三字段加起来)

insert into a(fCmpId,fProdNo,fProdId) values(@fCmpId,@fProdNo,(select fCmpId+fProdNo+fProdId from a where 获取上一条记录的选择条件))

其实跟分步完成是一样的思路。

收获园豆:10
dege301 | 老鸟四级 |园豆:2825 | 2009-11-09 14:13
谢谢,按你的思路,我在又在fCmpId上建索引,插入和更新还挺快。
莫慌 | 园豆:9 (初学一级) | 2009-11-10 19:29
其他回答(2)
0

update a set fProdId=b.fProdid
from (select * from a where fProdid=0) as b inner join a on
a.fCompId
=b.fCompId and a.fProdNo=b.fProdNo
where a.fProdid=0

其实是一个关联表的批量更新

http://www.cnblogs.com/downmoon/archive/2007/12/29/1019832.html

收获园豆:5
邀月 | 园豆:25475 (高人七级) | 2009-11-09 14:17
0

直接在datatable中更新,然后一大批update. 把没用的行数去掉.

收获园豆:5
风浪 | 园豆:2996 (老鸟四级) | 2009-11-09 17:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册