簡體   English   中英

MySql Group By 和 order by date

[英]MySql Group By and order by date

這是我的表數據:

id      page_id     time            created
=======================================================
1       1           00:15:00        2020-11-05 09:55:54
2       1           00:25:00        2020-11-10 07:35:24
3       2           00:10:25        2020-11-06 06:15:20

這是 MySql 查詢:

SELECT
  a.* SUM (a.time) AS time
FROM
  `activity` AS a
GROUP BY a.page_id
ORDER BY a.created DESC;

期望的結果是將最新的記錄顯示在頂部,但相反,我將第一條記錄顯示在頂部;

喜歡:

2       1           00:25:00        2020-11-10 07:35:24
3       2           00:10:25        2020-11-06 06:15:20

相反,我得到了這個:

1       1           00:15:00        2020-11-05 09:55:54
3       2           00:10:25        2020-11-06 06:15:20

您似乎想要每個id的最新記錄,如created所定義。 如果是這樣,您需要過濾而不是聚合。

在 MySQL 8.0 中,我建議使用窗口函數:

select *
from (
    select a.*,
        rank() over(partition by page_id order by created desc) rn
    from activity a
) a
where rn = 1
order by created desc

在早期版本中,您可以使用相關子查詢進行過濾:

select a.*
from activity a
where a.created = (
    select max(a1.created) from activity a1 where a1.page_id = a.page_id
)

暫無
暫無

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

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