【问题标题】:MySQL: Get distinct values of column row order by dateMySQL:按日期获取列行顺序的不同值
【发布时间】: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、...

拜托,谁能告诉我我做错了什么?

非常感谢您:

【问题讨论】:

  • 编辑您的问题并显示您想要的结果。

标签: mysql sql group-by distinct


【解决方案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
    

    【讨论】:

    • 这个查询没有得到想要的结果。无论如何,谢谢,
    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2014-04-26
    相关资源
    最近更新 更多