我有一个具有以下输出(正确)的查询:
15
44
查询:
SELECT T.numContribuinte,
T.numero,
SUM(C.valor - T.valorTotalChamadas) AS saldo
FROM telemovel T
JOIN CARREGAMENTO C ON C.numero = T.numero
GROUP BY T.numContribuinte, T.numero
HAVING saldo > 0
ORDER BY T.numero DESC
如果我删除单词 sum,输出将是:
15
15
我的问题是
为什么缺少总和会在输出中产生这种差异?
最佳答案
造成差异的原因是 by design, MySQL allows columns in the SELECT to not be stated in the GROUP BY
or aggregate functions (MAX, MIN, COUNT, etc) 。此功能需要注意的是返回的值是任意的——不能保证它们每次都一致。
支持符合 ANSI 的规定,但很少(仅据我所知 SQLite)支持这种行为。其他人则要求该列在 GROUP BY
中提及或包含在聚合函数中。
关于mysql - 查询中的减法 (SUM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6702167/