2011-01-13 44 views
-1

簡單的例子,以獲得問題開始:如何基於單行內指標添加行值

臨時表實例

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 

最後,我想尋找一個表中,有任何ID 2的標誌,採取該值並將其添加到關聯的父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

已更新。

假設那裏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,而不是獲得更好的性能。

+0

不想更新任何東西 - 這是一個用於其他方法的臨時表。我上面繪製的表格不存在,永遠不會超出臨時狀態。 – JM4 2011-01-13 19:14:14