2016-02-12 154 views
-2

我有,我不能在MySQL的身影一个简单的要求:MySQL查询SUM()的子查询

随着我的查询,我得到这个:

TABLEA 
+----+----------+ 
| id | quantity | 
+----+----------+ 
| 1 |  2 | 
| 2 |  5 | 
| 3 |  7 | 
| 4 |  4 | 
+----+----------+ 

Select id, Quantity From tableA 

而且我想这一点:

TABLE A 
+----+------------+--------+ 
| id | quantity | total | 
+----+------------+--------+ 
| 1 |   2 | 18  | 
| 2 |   5 | 18  | 
| 3 |   7 | 18  | 
| 4 |   4 | 18  | 
+----+------------+--------+ 

Select id, Quantity, SUM(quantity) total From tableA 

但我不希望这样做

Select id, Quantity, FROM tableA 
JOIN select SUM(quantity) total FROM tableA 

因为tableA在我的代码中已经是一个子查询,并且需要一些时间。

有什么想法吗?

编辑:我使用JOIN我的例子,但我想避免所有查询使用 “FROM表A” 再次

编辑2:

TABLE A 
+----+------------+--------+ 
| id | quantity | total | 
+----+------------+--------+ 
| 1 |   2 | 7  | 
| 1 |   5 | 7  | 
| 2 |   7 | 11  | 
| 2 |   4 | 11  | 
+----+------------+--------+ 

回答

0

你必须做一个子查询

SELECT 
    a.id, 
    a.Quantity, 
    (SELECT SUM(b.quantity) FROM tableA b) 
FROM 
    tableA a 

编辑:否则,你可以创建自己的MySQL与上述子选择视图,然后加入该表。

+0

我知道这个答案,但有没有办法再次做“从TABLEA”? – Frenentix

+0

非我所知道的,因为你尝试使用表上的聚合函数,但同时你试图获得单个项目 – Fuujin

+0

事实上,我最好希望看到编辑2,但你可能没有解决方案 – Frenentix

0

使用两个选择语句,总和存储到一个变量:

SELECT SUM(数量)为从表A @sum_quantity;从表A中选择ID,数量,@ sum_quantity totalA

这里,聚合函数被执行一次。