Mysql从行中删除重复并更新行

时间:2014-03-14 06:54:18

标签: mysql

我有一个类似

的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

我正在寻找解决方案的光标,但了解光标不会更新实际数据。

请帮助。

1 个答案:

答案 0 :(得分:0)

对于此方法,您需要从任何服务器端脚本获取帮助。因此,要遵循的流程将是

1)从表格中选择所有具有member_column的行作为结果集字段,缩小任何您选择的条件

2)迭代结果集

3)用“|”分解member_column字段并形成一个字符串数组。这会是 array(“4:20131217:0922”,“019723010104; 4.3660”,“050122010004; 12.1407”,“16.5067”);

4)完成所有计算并删除重复项

5)一旦你有一个独特的数组,用破折号“|”

将其内爆

6)更新行。

希望有所帮助:)