gpt4 book ai didi

php - MYSQL Group by weekofyear 停止工作

转载 作者:行者123 更新时间:2023-11-29 08:57:27 25 4
gpt4 key购买 nike

我在使用某些 MYSQL 时遇到问题。下面的代码一直运行良好,直到一两周前它开始将 2012 年 2 月 21 日之后的所有内容分组在一起。第一个条目是 2011 年 9 月 18 日,所以它已经整整一年没有运行了。

SELECT dept, time, COUNT(*) AS freq
FROM prefix_table1 a
INNER JOIN prefix_table2 b b ON a.author = b.username
GROUP BY WEEKOFYEAR(DATE(FROM_UNIXTIME(time)))
ORDER BY time ASC
LIMIT 24

我想通过此查询实现的目标是检索每周发生的条目数。

一旦我有了它,我就会在 PHP 中处理 UNIX 标记,以获取一年中的周数,并在其后加上年份后缀,以便统计数据可以工作超过 12 个月。

问题是 - 我哪里出错了?为什么它在 2012 年 2 月 21 日停止工作?

最佳答案

问题在于您按一组与您选择的字段不同的字段进行分组。该查询只是偶然起作用的。我的意思是,您已按 WEEKOFYEAR 进行分组并选择时间值。分组实际上所做的是“删除”详细信息并使用它们应用函数(在本例中为计数)进行分组。

现在,您尝试在分组的同时显示详细信息,这会导致查询不正确。例如,这可以工作,但不会向您显示详细信息:

SELECT dept, WEEKOFYEAR(DATE(FROM_UNIXTIME(time))) as aWeek, COUNT(*) AS freq
FROM prefix_table1 a
INNER JOIN prefix_table2 b b ON a.author = b.username
GROUP BY dept, aWeek
ORDER BY aWeek
LIMIT 24

原始查询错误逻辑的一个明显例子是:如果您分组了,比如说,20 条记录(计数将显示 20)...如果您只能显示,您会显示所有记录的时间其中 1 条记录?

编辑:

正如 @ypercube 所说,前面的查询可能不起作用,具体取决于您是否强制服务器遵守 ansi 标准。如果是这种情况,那么您可以尝试运行以下(有点不友好)查询:

SELECT dept, WEEKOFYEAR(DATE(FROM_UNIXTIME(time))) as aWeek, COUNT(*) AS freq
FROM prefix_table1 a
INNER JOIN prefix_table2 b b ON a.author = b.username
GROUP BY dept, WEEKOFYEAR(DATE(FROM_UNIXTIME(time)))
ORDER BY aWeek
LIMIT 24

关于php - MYSQL Group by weekofyear 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9593284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com