例如,我有一个这样的表:
product | quantity | something
-------------------------------
abc | 5 | 2
xzy | 5 | 2
asd | 10 | 2
当我需要所有记录时,我喜欢这样并得到3个结果:
select * from tableName
但我希望得到第4行的总数量(50)和东西(6)。是否有可能在SQL查询中或我必须循环我的结果以获得查询执行后的总计?如果可能的话,我想在查询中这样做。
答案 0 :(得分:14)
(SELECT product,
quantity,
something
FROM tablename)
UNION
(SELECT "all" AS product,
SUM(quantity) AS quantity,
SUM(something) AS something
FROM tablename)
这是有效的查询。它会在结果的末尾添加第四行
答案 1 :(得分:13)
您可以使用汇总来生成总计,但您必须将其更改为聚合函数,如下所示:
SELECT product, sum(quantity), sum(something)
FROM tableName
GROUP BY product WITH ROLLUP
答案 2 :(得分:3)
这不是解决这个问题的最佳方法,但应该做到这一点
select product, quantity, something from tableName
union
select 'sum', sum(quantity), sum(something) from tableName
答案 3 :(得分:2)
你可以
SELECT Product, Quantity, Something
FROM TABLENAME
UNION
SELECT 'ALL', SUM(Quantity),SUM(Something)
FROM TABLENAME
但是,这不会在表格中添加一行。无论如何,这可能不是一个好主意。
答案 4 :(得分:1)
$q="select sum(quantity), sum(something) from tableName";
答案 5 :(得分:0)
请尽量避免使用联合查询,在进行联接和案例查询的情况下,这可能会增加执行时间。因此,正如@Chris Strickland所说,请使用WITH ROLLUP。