这是我在数据库中的内容:
data table status_ord
2019-08-20 15:30:12 tab1 1
2019-08-20 15:30:30 tab2 1
2019-08-20 15:31:31 tab2 2
2019-08-20 15:31:40 tab1 1
2019-08-20 15:31:55 tab1 1
2019-08-20 15:32:12 tab2 1
2019-08-20 15:32:35 tab2 1
2019-08-20 15:50:45 tab1 1
2019-08-20 15:55:52 tab2 1
2019-08-20 12:30:12 tab1 2
2019-08-20 12:35:35 tab2 2
2019-08-20 12:45:44 tab1 2
我需要首先按 status_ord 排序,我需要首先拥有所有状态 1 的人,然后拥有状态 2 的人。 然后我需要每 5 分钟间隔按表排序,并且所有内容都必须按日期排序。
得到这个输出:
data table status_ord
2019-08-20 15:30:12 tab1 1
2019-08-20 15:31:40 tab1 1
2019-08-20 15:31:55 tab1 1
-- first 5 minutes block of tab 1
2019-08-20 15:30:30 tab2 1
2019-08-20 15:32:12 tab2 1
2019-08-20 15:32:35 tab2 1
-- first 5 minutes block of tab 2
2019-08-20 15:50:45 tab1 1
2019-08-20 15:55:52 tab2 1
2019-08-20 12:30:12 tab1 2
2019-08-20 12:35:35 tab2 2
2019-08-20 12:45:44 tab1 2
2019-08-20 15:31:31 tab2 2
我只知道如何对状态和日期数据进行排序,如下所示:
SELECT *
FROM Ordine u
ORDER BY u.status_ord ASC, u.data
我希望我说得清楚。谢谢!
最佳答案
如果我理解正确,您可以使用整数算术将日期时间舍入为 5 分钟间隔:
SELECT *
, UNIX_TIMESTAMP(`data`) div (5 * 60) * (5 * 60) AS ts
FROM t
ORDER BY `status_ord`, `ts`, `table`
关于MySQL 以 5 分钟为间隔订购 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57573281/