提问者:小点点

使用多年后GROUPBY失败的MySQL查询


我有一个包含两个表的数据库,expenseuser费用表为:

EXPENSE
id, int(11)
cost, double
category_fk, int(11)
date_time, datetime
comment, varchar(1000)
user_fk, int(11)

大约四年来,我一直使用以下SQL查询按月对单个用户的费用进行分组,并报告每月的总费用:

SELECT
  MONTH(date_time),
  YEAR(date_time),
  SUM(cost)
FROM expense
JOIN `user`
  ON `user`.id = expense.user_fk
WHERE `user`.id = 1234
GROUP BY
  date_time,
  MONTH(`date_time`),
  YEAR(`date_time`)
ORDER BY `date_time` ASC

现在,这个查询不再起作用了。 特别是,查询groupby不正确。 相反,每个事务返回时不包含该月的金额。

唯一改变的是,在本地,我升级了MySQL,因为我有了新的macOS。 然而,这是一个web应用程序,MySQL版本,至少据我所知,在服务器上没有改变,尽管它可以改变,因为它是一个共享的托管服务。

我不知道是什么导致了这一切。 如有任何提示,将不胜感激。


共1个答案

匿名用户

group BY date_time使它分别返回每一行,因为我相信每一行都有唯一的date_time值,所以不会发生分组。 尝试将其更改为

GROUP BY
  MONTH(`date_time`),
  YEAR(`date_time`)

它应该能起作用