gpt4 book ai didi

mysql - 非常复杂的 Group By/Unique/Limit by SQL 命令

转载 作者:行者123 更新时间:2023-11-29 06:20:28 25 4
gpt4 key购买 nike

实际上我什至不知道如何调用它:P,但是...

我有一张表,我们称之为“上传”

id    owner    date
-----------------------------
0 foo 20100101120000
1 bar 20100101120300
2 foo 20100101120400
3 bar 20100101120600
.. .. ..
6 foo 20100101120800

现在,当我做类似的事情时:

SELECT id FROM uploads ORDER BY date DESC

这将导致:

id    owner    date
-----------------------------
6 foo 20100101120800
.. .. ..
3 bar 20100101120600
2 foo 20100101120400
1 bar 20100101120300
0 foo 20100101120000

问题:很好,但是,我想走得更远。因为现在,当您构建时间线时(我就是这样做的:P),您会收到“垃圾邮件”,消息说 foo 和 bar 上传了某些内容。我想对它们进行分组,并在日期字段中返回时间限制为“500”的第一个结果。

我需要什么样的 SQL 命令才会导致:

id    owner    date
-----------------------------
6 foo 20100101120800
3 bar 20100101120600
0 foo 20100101120000

然后,之后,我可以对每条记录执行调用,以在 5 分钟的时间范围内获取关联记录(这是 id=6 的示例):

SELECT id FROM uploads WHERE date>=20100101120800-500 ORDER BY date DESC

现在有人知道我应该怎么做第一步吗? (因此限制/分组结果)

(顺便说一句。我知道当我想使用它时,我应该将每个日期 (YmdHis=60) 转换为 Unix 时间 (=100),但我不需要 5 分钟 正好是 5 分钟,有时可能会少一分钟......)

最佳答案

即使有你的例子,我也不太清楚你想要得到的结果。也许有舍入和分组依据的东西。

SELECT max(id) max_id,owner, (ROUND(date/500)*500) date_interval, max(date) date
FROM uploads GROUP BY date_interval,owner

您可能想使用 FLOOR 或 CEILING 而不是 ROUND,具体取决于您的需要。

关于mysql - 非常复杂的 Group By/Unique/Limit by SQL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998036/

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