日期:2014-05-18  浏览次数:20441 次

怎样批量更新这种超大数据的表
表结构
项目名称中1代表出租的,2租出的
数据是随便输入的.
农户代码,项目名称,水田面积,旱地面积
0001               1                 4                   3
0001               2                 3                   1
0002               1                 2                   0.5
0002               2                 5                   0.25
0003               1                 2                   .8
0003               2                 6                   1.1
........
........
假设现将所有农户项目1的水田面积更新为以对应项目的所有面积*1.2;
旱地地面积更新为以对应项目的所有面积*1.4

项目2的水田面积更新为以对应项目的所有面积*1.3;
旱地面积更新为以对应项目的所有面积*1.5

既是这样:

农户代码,项目名称,水田面积,旱地面积
0001               1                 7*1.2           7*1.4
0001               2                 4*1.3           4*1.5
0002               1                 2.5*1.2       2.5*1.4
0002               2                 5.25*1.3     5.25*1.5
0003               1                 2.8*1.2       2.8*1.4
0003               2                 7.1*1.3       7.1*1.5
........
........

------解决方案--------------------
就这样?
应该不会慢吧,操作很简单啊

------解决方案--------------------
更新按照什么规律啊?
------解决方案--------------------
表没有主键?

------解决方案--------------------
update table1 set 水田面积=
case 项目名称
when 1 then (水田面积+旱地面积)*1.2
when 2 then (水田面积+旱地面积)*1.3
else 水田面积
end
,旱地面积 =
case 项目名称
when 1 then (水田面积+旱地面积)*1.4
when 2 then (水田面积+旱地面积)*1.5
else 旱地面积
end

不过如果数据太大,1亿,够受的。



------解决方案--------------------
update table1 set 水田面积=
case
when 项目名称 = 1 then (水田面积+旱地面积)*1.2
when 项目名称 =2 then (水田面积+旱地面积)*1.3
else 水田面积
end
,旱地面积 =
case
when 项目名称 = 1 then (水田面积+旱地面积)*1.4
when 项目名称 = 2 then (水田面积+旱地面积)*1.5
else 旱地面积
end