2013-03-17 77 views
0

我想在同一個表中使用相同的ID將總和值存入我的數據庫。 表在數據庫:MySQL - 在同一個表中,總和值寬度相同的ID

| ID | Value_o | Value_t | Value_tt | 
| 1 | 40 | 20 | 10  | 

查詢:

SELECT SUM(Value_o) AS Value_o, SUM(Value_t) AS Value_t, SUM(Value_tt) AS Value_TT 
WHERE ID IN(1, 1) 

而現在的輸出ID:

| Value_o | Value_t | Value_tt | 
| 40 | 20 | 10  | 

,但我想:

| Value_o | Value_t | Value_tt | 
| 80 | 40 | 20  | 

我希望得到這個輸出沒有JOIN。

謝謝!

PS。對不起,我的壞英格:/

+0

「但我想:」 ---它是如何與表中的數據相關聯? – zerkms 2013-03-17 21:42:55

+1

你能解釋一下邏輯嗎?看起來你只是想把每列乘以2,但你能確認嗎? – Taryn 2013-03-17 21:42:57

+0

你能給我們一些更多的信息嗎? – Mingebag 2013-03-17 21:59:43

回答

1

也許這是你在找什麼:

SELECT 
    SUM(Value_o) AS Value_o, 
    SUM(Value_t) AS Value_t, 
    SUM(Value_tt) AS Value_TT 
FROM 
    (
    SELECT ID, Value_o, Value_t, Value_tt FROM Table1 
    UNION ALL 
    SELECT ID, Value_o, Value_t, Value_tt FROM Table1 
) Table2 
WHERE ID IN(1, 1); 

Demo

+0

我應該改變,如果我想添加:IN(1,1,1)??現在它不工作,只有當我添加(1,1)。 – user2180346 2013-03-20 19:58:56

0

試試這個:

SELECT SUM(Value_o) AS Value_o, SUM(Value_t) AS Value_t, SUM(Value_tt) AS Value_TT 
FROM TABLE 
GROUP BY ID 
HAVING ID = 1 
+0

它也行不通:( – user2180346 2013-03-17 21:50:32

+0

然後告訴我們你是怎麼想要80 40 20出來的,你是如何得到它的。 – Jonast92 2013-03-17 21:53:08

+0

對我來說這是工作。下次更清楚地表達你想達到什麼! www.sqlfiddle.com/#!2/d9830/3/0 – www 2013-03-17 22:00:15

0

MySQL的in操作不起作用這條路。即使您在該集合中有多個值,它也不會重複結果的行。

如果你想擁有的所有行多次,您必須使用union all,總結了該

SELECT SUM(Value_o) AS Value_o, SUM(Value_t) AS Value_t, SUM(Value_tt) AS Value_TT 
from (select * from mytable union all select * from mytable) t 
WHERE ID IN (1) 
相關問題