【问题标题】:How could SUM(column) give incorrect results in MySQL?SUM(column) 如何在 MySQL 中给出不正确的结果?
【发布时间】:2011-11-04 23:11:47
【问题描述】:

我有以下从 PHP 调用的简单 MySQL 查询:

SELECT foo_id, SUM(number_of_guests)
FROM guests 
WHERE foo_id = $foo_id
GROUP BY foo_id

这很好用,除了一个 $foo_id,它返回的值大约是 number_of_guests 字段总和的 2.5 倍。

仅对于 $foo_id 的某个值,什么可能导致此行为?

有没有更好的方法来做到这一点?

【问题讨论】:

  • 你能举一些例子数据来说明这个问题吗?
  • 您的查询中是否存在您在示例中省略的连接?
  • 不,这是实际的查询。
  • @B 七:如果是在实际查询中,我看不出它会出现任何错误。您很可能是手动错误计算了 number_of_guests (一些 gui 工具会自动限制行数,因此您可能没有看到所有 SELECT * FROM guests WHERE foo_id = $foo_id
  • 正如@MarkByers 所说;数据或 G.O. 通常我不愿意相信服务器的行为很糟糕,尽管知道 $foo_id 是什么数据类型会有所帮助。

标签: mysql sql group-by sum


【解决方案1】:

您的查询应该有效。该错误很可能在您用于验证结果的其他方法中。

有没有更好的方法来做到这一点?

是的。由于您只获取一个组,因此不需要您的 GROUP BY 子句:

SELECT SUM(number_of_guests)
FROM guests 
WHERE foo_id = $foo_id

【讨论】:

    【解决方案2】:

    问题是有一行的 number_of_guests 值很大。我在浏览数据时没有看到,因为有几百行。当我从 HTML 页面复制并粘贴到 Excel 时它没有显示,因为该行缺少其他大多数列,而 HTML 页面包含所有列。

    感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 2012-08-27
      • 2017-12-14
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多