MySQL中的SUM函数问题

时间:2014-01-20 16:49:52

标签: php mysql sum

我在MySQL中有以下查询:

SELECT DISTINCT(A.lineId), A.title, A.label, A.price * OD.quantity FROM Additional A JOIN OrderDetail OD ON A.orderId=OD.orderId WHERE A.orderId=179 ORDER BY A.lineId

http://imagizer.imageshack.us/v2/800x600q90/839/kfzq.png

此时一切正常,但是如果我使用SUM函数而不是A.price * OD.quantity,它应该给我“176”作为结果而不是它。看:

http://imagizer.imageshack.us/v2/800x600q90/802/kh4f.png

为什么会这样?

2 个答案:

答案 0 :(得分:2)

以下是您的查询:

SELECT DISTINCT(A.lineId), A.title, A.label, A.price * OD.quantity
FROM Additional A JOIN
     OrderDetail OD
     ON A.orderId=OD.orderId
WHERE A.orderId=179
ORDER BY A.lineId;

第一行相当于:

SELECT DISTINCT A.lineId, A.title, A.label, A.price * OD.quantity

因此,当所有四个值都不同时,它返回一行。括号什么都没有。 HOWEVER ,您可能有重复的行缺失。当你这样做时,你可能得到不同的结果:

SELECT A.lineId, A.title, A.label, A.price * OD.quantity

是总和正在使用的数据。如果要在不同的值上使用sum,请使用子查询:

SELECT LineId, Title, Label, sum(pg)
FROM (SELECT DISTINCT A.lineId, A.title, A.label, A.price * OD.quantity as pq
      FROM Additional A JOIN
           OrderDetail OD
           ON A.orderId=OD.orderId
      WHERE A.orderId=179
     ) t;

通常,对此类查询的需求表明数据存在问题。

答案 1 :(得分:0)

我相信你正试图将它们相乘而不是添加。检查一下,看看它是否有帮助Sum Two Columns in Two Mysql Tables