开始提问的快速示例:
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中拉出另一个表(上表是基于两个表生成的)。
上表是作为临时表创建的,因此不能或不会进行任何更新或表修改。我期待创建一个选择语句。
答案 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可能会获得更好的性能。