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:按日期获取列行顺序的不同值的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基本概念和正确发音(表列行注解等讲解)

MySQL基本概念和正确发音(表列行注解等讲解)

在 xsl:fo 表中按列行值分组

使用 AG 网格时是不是可以只显示列行?

html 松树12列行表

dataGridView添加列行