MySQL:获取MySql结果中最后一行的总计

13
例如,我有一个像这样的表格:
product | quantity | something
-------------------------------
 abc    |   5      |  2
 xzy    |   5      |  2
 asd    |   10     |  2

当我需要所有记录时,我会像这样操作并得到3个结果:

select * from tableName 

但是我想要获取第四行,以显示总数数量为50和某项数量为6。在SQL查询中是否可能实现,还是必须在查询执行后循环结果以获得总数?如果可能的话,我希望在查询中完成此操作。


我认为你需要再次运行带有SUM()语句的请求(请参见http://www.tizag.com/mysqlTutorial/mysqlsum.php)。 - tsadiq
6个回答

27

你可以使用Rollup计算汇总,但必须将其更改为聚合函数,如下所示:

SELECT product, sum(quantity), sum(something)
FROM tableName
GROUP BY product WITH ROLLUP

1
这应该是被接受的答案,因为它是最有效和最短的。 - Ahmad
1
完美运行,而且非常简单。 - Crash Override

19
(SELECT product, 
        quantity, 
        something 
 FROM   tablename) 
UNION 
(SELECT "all"          AS product, 
        SUM(quantity)  AS quantity, 
        SUM(something) AS something 
 FROM   tablename) 

这是一个有效的查询语句。它将在您的结果末尾添加第四行,就像您期望的那样。


3

虽然这不是解决问题的最佳方式,但应该能够解决问题。

select product, quantity, something from tableName
union 
select 'sum', sum(quantity), sum(something) from tableName

2
你可以
SELECT Product, Quantity, Something 
FROM TABLENAME

UNION

SELECT 'ALL', SUM(Quantity),SUM(Something) 
FROM TABLENAME

这样做不会在您的表中添加行。这也许并不是一个好主意。

1

尽量避免使用联合查询,因为在连接和案例查询的情况下,它可能会增加执行时间。因此,正如@Chris Strickland所说,请使用WITH ROLLUP。


这可能只应该是一个评论。 - undefined
请不要发表回答只是为了确认另一个回答。 - undefined

1
$q = "select sum(quantity), sum(something) from tableName";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接