给出一个示例表:
| id | locationID | Date_Time | temp |
|----|------------|---------------------|------|
| 1 | L001 | 2018-09-04 11:25:00 | 52.6 |
| 2 | L002 | 2018-09-04 11:35:00 | 66.1 |
| 3 | L003 | 2018-09-04 03:30:00 | 41.2 |
| 4 | L003 | 2018-09-05 10:22:00 | 71.8 |
| 5 | L003 | 2018-09-06 14:21:00 | 63.4 |
| 6 | L003 | 2018-09-06 18:18:00 | 50.1 |
我想返回每个组的最新n个记录,如下所示:
预期产量:
| id | locationID | Date_Time | temp |
|----|------------|---------------------|------|
| 1 | L001 | 2018-09-04 11:25:00 | 52.6 |
| 2 | L002 | 2018-09-04 11:35:00 | 66.1 |
| 4 | L003 | 2018-09-05 10:22:00 | 71.8 |
| 5 | L003 | 2018-09-06 14:21:00 | 63.4 |
| 6 | L003 | 2018-09-06 18:18:00 | 50.1 |
我有这个查询,但它只返回每个组的最新行?我想为每个组返回多行(n行数)?
SELECT *
FROM HealthStatus
WHERE Date_Time IN (
SELECT MAX(Date_Time)
FROM HealthStatus
GROUP BY LocationID
)
如果你能帮我实现我想要的结果,我会非常感激的。提前谢谢。
2条答案
按热度按时间wljmcqd81#
有什么方法可以让我得到每组最新的n行吗?
在row\ u number()可用之前,可以使用变量来模拟该函数
mhd8tkvw2#
如果您升级到mysql 8.0,那么这将解决此问题:
在5.7。。。我想不出一个办法(