2009-06-28 62 views
1

我有這樣的SQL:mySQL中的總列數!

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)佔它給了我只有一排,但是當我刪除此SUM(XNUM * xprice)這是給我的所有行

我的問題是我如何得到總和?而我需要從查詢所有行?!

+1

這似乎並不完全清楚,似乎您正試圖用一個查詢來完成兩件事情。將其制動成兩個查詢或寫入兩個子查詢,然後進行JOIN。 – mfloryan 2009-06-28 20:08:46

回答

2

Sum是計算所有選定行上的值(xnum * xprice)之和的函數。結果是一行。

如果要計算多組行的總和,可以使用GROUP BY子句將列分組(例如GROUP BY用戶標識,而不是where子句將爲所有用戶計算SUM(xnum * xprice))用戶)

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'