我在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
为什么会这样?
答案 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