我有一个类似
的mysql表+-----------------+---------------------------------------------------------------+---------+
| col_key |member_column | weight |
+-----------------+---------------------------------------------------------------+---------+
| 4:20131205:0922 | 018210020504;4.1672|018210020504;4.1672 | 8.3344 |
| 4:20131204:0923 | 015819070006;13.8584|015819070006;13.8584 | 27.7168 |
| 4:20131202:0922 | 018710040303;8.7864 | 8.7864 |
| 4:20131204:0923 | 017319010003;2.7044|017319010004;2.7044 | 5.4088 |
| 4:20131202:0922 | 055320020104;7.3357 | 7.3357 |
| 4:20131217:0922 | 019120020404;7.8727|019120020404;7.8727 | 15.7454 |
| 4:20131223:0923 | 011820010203;11.5213 | 11.5213 |
| 4:20131216:0925 | 018320010403;13.7416 | 13.7416 |
| 4:20131217:0922 | 017420020205;6.7384 | 6.7384 |
| 4:20131217:0922 | 019723010104;4.3660|050122010004;12.1407|050122010003;12.1407 | 28.6474 |
| 4:20131224:0926 | 022923040107;10.2461|022923040106;10.2461 | 20.4922 |
| 4:20131216:0925 | 050122010004;12.1407|050122010003;12.1407 | 24.2814 |
| 4:20131216:0925 | 061020030007;3.8048 | 3.8048 |
+-----------------+---------------------------------------------------------------+---------+
这里member_columns具有不同成员的值:weight为|分离。重量列具有特定行中成员的总重量。
我们需要从member_columns中删除重复的成员并相应地更新权重。 例如:
带有col_key 4:20131205:0922
的行包含member_column,其中重复成员。 我需要将这些列更新为
4:20131205:0922 | 018210020504;4.1672 | 4.1672
同样的列
4:20131217:0922 | 019723010104;4.3660|050122010004;12.1407|050122010003;12.1407|28.6474
我需要将其更新为
4:20131217:0922 | 019723010104;4.3660|050122010004;12.1407|16.5067
我正在寻找解决方案的光标,但了解光标不会更新实际数据。
请帮助。
答案 0 :(得分:0)
对于此方法,您需要从任何服务器端脚本获取帮助。因此,要遵循的流程将是
1)从表格中选择所有具有member_column的行作为结果集字段,缩小任何您选择的条件
2)迭代结果集
3)用“|”分解member_column字段并形成一个字符串数组。这会是 array(“4:20131217:0922”,“019723010104; 4.3660”,“050122010004; 12.1407”,“16.5067”);
4)完成所有计算并删除重复项
5)一旦你有一个独特的数组,用破折号“|”
将其内爆6)更新行。
希望有所帮助:)