簡體   English   中英

SQL查詢按時間戳分組和排序

[英]SQL query to group by and order by timestamp

大家好,我嘗試過正確的方法,但我做不到,也許您可​​以指出正確的方向

我有3列,“ url_id”,“時間戳”和“ o”。 我需要按“ url_id”分組並按最新時間戳排序。

表“示例”

timestamp | url_id   |    o
----------------------------
2000      | 1        |   50
2007      | 1        |   70
2011      | 1        |   90
2001      | 2        |   20
2006      | 2        |   50
2009      | 2        |   40
2011      | 2        |   10

“ o”是我想要的末尾值。 我試圖用子查詢來執行此操作,但一直獲取最舊的值(按順序嘗試,沒有運氣)。

我究竟做錯了什么? 我要查找的內容實際上需要子查詢嗎?

SELECT url_id
     , MAX(timestamp) AS currentTS
  FROM yourTable
  GROUP BY url_id
  ORDER BY currentTS DESC

之后您最后的解釋,我想您需要將上面的查詢加入到原始表中,如下所示:

SELECT y.timestamp
     , y.url_id
     , y.o
FROM yourTable y
JOIN 
    ( SELECT url_id
           , MAX(timestamp) AS currentTS
      FROM yourTable
      GROUP BY url_id
    ) AS grp
  ON grp.url_id = y.url_id
    AND grp.currentTS = y.timestamp
ORDER BY y.timestamp DESC

注意:如果有兩行(或更多行)具有相同的url_id和相同的時間戳記,則它們都將(或全部)出現在結果中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM