gpt4 book ai didi

mysql - 在mysql中使用DATE_FORMAT进行分组

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

我正在 Mysql 中编写 SQL 查询,其中结果应按 ID 和日期进行分组。日期是动态确定的,可以是简单的日期时间字段,也可以是年和月或周的组合。请参阅下面的查询了解一年中的第几周的情况;

SELECT t.transactionId, t.transactionDate, t.transactionProcessDate, 
t.status, t.type, t.versionId, t.note, WEEKOFYEAR(t.transactionDate) as CW,
YEAR(t.transactionDate) as yr, (DATE_FORMAT(t.transactionDate, '%Y-%u')) as tDate
FROM transaction t
WHERE (t.status = 'A' or t.status = 'N')
GROUP BY t.transactionId , tDate

我遇到的问题是尝试按 tDate 进行分组,

GROUP BY t.transactionId , tDate

返回具有相同日期的重复项。

当我将查询更改为按 CW 和 yr 字段分组时,

GROUP BY t.transactionId , CW, yr

我得到了预期的结果,没有重复。

问题:DATE_FORMAT生成的字段进行分组是否存在问题,可能导致返回的查询无法识别重复项?
我想从查询中完全排除 CW 和 yr 这两个字段,因为它们仅用于分组。

最佳答案

已更新 首先,很难说没有看到您的真实数据,但 GROUP BY DATE_FORMAT(t.transactionDate, '%Y-%u') 有效还好

SELECT transactionId, 
DATE_FORMAT(transactionDate, '%Y-%u') tDate
...
FROM transaction
WHERE status IN('A', 'N')
GROUP BY transactionId, tDate

这里是SQLFiddle

旁注:即使 MySql 允许在 SELECT 中指定一个不是GROUP BY 的一部分这不是一件好事。您需要将聚合函数应用于该字段(MAXMIN...)。当您执行 GROUP BY

时,无法确定要获取此类字段的哪个值

关于mysql - 在mysql中使用DATE_FORMAT进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16709346/

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