2013-03-17 76 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) 
相关问题