如何基于单行内的指标添加行值

时间:2011-01-13 19:05:15

标签: mysql

开始提问的快速示例:

临时表示例

ID |  value   |  Flag  | parent
-------------------------------
1  |  12.50   |   1    |   19
2  |  13.50   |   1    |   20
3  |  14.50   |   2    |   1 
4  |  15.50   |   1    |   21   
5  |  16.50   |   1    |   22
6  |  17.50   |   1    |   23
7  |  18.50   |   2    |   2
8  |  19.50   |   1    |   24 

最终,我想搜索一个表,对于标志为2的任何ID,取该值并将其添加到关联的父ID。

理想的结果会回归:

ID |  value   |  Flag  | parent
-------------------------------
1  |    27    |   1    |   19
2  |    32    |   1    |   20
4  |  15.50   |   1    |   21   
5  |  16.50   |   1    |   22
6  |  17.50   |   1    |   23
8  |  19.50   |   1    |   24 

其中3和7被删除,其值被添加到其父值(分别为1和2)。请记住,父字段已经从内部JOIN中拉出另一个表(上表是基于两个表生成的)。

上表是作为临时表创建的,因此不能或不会进行任何更新或表修改。我期待创建一个选择语句。

1 个答案:

答案 0 :(得分:-1)

更新

假设Flag的唯一可能值是1和2:

INSERT temp_table (ID, Value, Flag, Parent)
SELECT MAX(IF(Flag = 1, ID, 0)), SUM(Value), 1, MAX(IF(Flag = 1, ParentID, 0))
FROM generated_query
GROUP BY IF(Flag = 1, ID, ParentID)

根据您生成查询的方式,使用LEFT JOIN可能会获得更好的性能。