【发布时间】:2019-08-26 09:32:20
【问题描述】:
我正在尝试从最接近指定日期和时间的表中检索数据,例如,您可以在下面看到一些关于门的数据以及它们是否在特定时间打开和关闭。我要检索按DoorTitle 分组的门列表,使其更接近特定时间。样本数据如下
Id DoorTitle Status DateTime
1 Door_1 OPEN 2019-04-04 9:16:22
2 Door_2 CLOSED 2019-04-01 15:46:54
3 Door_3 CLOSED 2019-04-04 12:23:42
4 Door_2 OPEN 2019-04-02 23:37:02
5 Door_1 CLOSED 2019-04-04 19:56:31
假设我想在2019-04-04 23:54:55 找出门的状态,如果它们是打开或关闭的,则可以向我提供按最接近该时间的门标题分组的记录。我试过这个查询,但它确实给了我最接近这次的记录,它只是通过检查DateTime 是否小于2019-04-04 23:54:55 来随机选择它们。
SELECT DoorTitle,Status,DateTime
FROM Doors
WHERE DateTime <= '2019-04-04 23:54:55'
GROUP BY DoorTitle;
运行查询后我想要的结果是按最接近日期和时间的 DoorTitle 分组的门列表,即如下所示指定的 2019-04-04 23:54:55 它应该返回这些结果,但我正在使用的查询没有返回这个。
DoorTitle Status DateTime
Door_3 CLOSED 2019-04-04 12:23:42
Door_2 OPEN 2019-04-02 23:37:02
Door_1 CLOSED 2019-04-04 19:56:31
让我知道我可以使用什么 sql 查询来实现这一点以及我的查询是如何出错的。提前致谢。
【问题讨论】:
标签: mysql sql date select greatest-n-per-group