mySQL中的列总数!

时间:2009-06-28 20:05:08

标签: sql mysql

我有这个sql:

SELECT * , (
xnum * xprice
) AS amount, SUM( xnum * xprice ) AS total
FROM xxbasket
LEFT JOIN xxsubproduct
USING ( xsubproduct_id )
LEFT JOIN xxcolor
USING ( xcolor_id )
WHERE xuserid = '3'

当我使用SUM(xnum * xprice)AS总计它只给我一行,但是当我删除这个SUM(xnum * xprice)时它会给我所有行

我的问题是如何得到总和?虽然我需要查询所有行?!

2 个答案:

答案 0 :(得分:2)

Sum是一个函数,其中计算所有选定行的值(xnum * xprice)之和。结果是一行。

如果要计算多组行的总和,可以使用GROUP BY子句,该子句将列分组到组(例如GROUP BY userid而不是where子句将为所有用户计算SUM(xnum * xprice) )

答案 1 :(得分:0)

SUM()函数是一个聚合运算符。与之关联的选择不能再返回单个行,只能返回有关行组的信息。

但是你可以在子查询中返回总和。这是一个例子,假设xprice列在xxsubproduct表中:

SELECT *, 
    xnum * xprice AS amount, 
    (   select sum(xnum * xprice)
        FROM xxbasket
        LEFT JOIN xxsubproduct USING xsubproduct_id
        WHERE xuserid = '3'
    ) as total
FROM xxbasket
LEFT JOIN xxsubproduct USING xsubproduct_id
LEFT JOIN xxcolor USING xcolor_id
WHERE xuserid = '3'