MySQL:按日期获取列行顺序的不同值
Posted
技术标签:
【中文标题】MySQL:按日期获取列行顺序的不同值【英文标题】:MySQL: Get distinct values of column row order by date 【发布时间】:2021-08-02 19:10:47 【问题描述】:我正在尝试获取一组按日期降序排序的结果,其中列 (zone_id) 的值不重复,但我找不到正确的查询。
我真正感兴趣的列是第 2 列 (zone_id),但我显示了 id 列,以便更清楚地显示我想要获得的结果。
简单按日期排序的表格有以下数据:
id | zone_id | updated_at |
---|---|---|
206 | 63 | 2021-05-11 09:22:19 |
205 | 63 | 2021-05-11 09:21:53 |
204 | 22 | 2021-05-11 09:21:38 |
5 | 33 | 2021-05-10 10:45:09 |
6 | 23 | 2021-05-10 10:45:09 |
3 | 3 | 2021-05-10 10:45:02 |
137 | 63 | 2021-03-06 17:02:25 |
143 | 67 | 2021-03-03 20:24:14 |
98 | 14 | 2020-11-06 14:49:44 |
177 | 29 | 2020-08-16 20:09:26 |
因此,在这种情况下,它应该接收的值应该是:
63、22、33、23、3、67、14、29
我尝试了以下查询但没有成功:
SELECT zone_id, id, updated_at
FROM table
GROUP BY zone_id
ORDER BY updated_at DESC
显示:23、33、3、67、84、63、88、98、...
SELECT DISTINCT zone_id, id, updated_at
FROM table
ORDER BY updated_at DESC
显示:63、63、22、33、23、3、63、67、...
拜托,谁能告诉我我做错了什么?
非常感谢您:
【问题讨论】:
编辑您的问题并显示您想要的结果。 【参考方案1】:我认为您希望row_number()
为每个区域选择一行然后排序:
select t.*
from (select t.*,
row_number() over (partition by zone_id order by updated_at desc) as seqnum
from t
) t
where seqnum = 1
order by updated_at desc;
【讨论】:
【参考方案2】:你可以像下面那样做 -
SELECT ZONE_ID FROM
(
SELECT zone_id, updated_at
FROM table
GROUP BY zone_id
) T
ORDER BY updated_at DESC
【讨论】:
这个查询没有得到想要的结果。无论如何,谢谢,以上是关于MySQL:按日期获取列行顺序的不同值的主要内容,如果未能解决你的问题,请参考以下文章