gpt4 book ai didi

mysql 选择每个项目的最大日期

转载 作者:行者123 更新时间:2023-11-29 10:46:55 24 4
gpt4 key购买 nike

我有下表:

帖子

| id | message         |
| 1 | a message |
| 2 | another message |

posts_summaries

| post_id | datetime            | param    | value  | 
| 1 | 2016-06-06 09:01:09 | like | 100 |
| 1 | 2016-06-06 09:01:11 | reach | 700 |
| 1 | 2016-06-06 09:01:07 | comments | 80 |
| 1 | 2016-06-06 10:01:06 | like | 180 |
| 1 | 2016-06-06 10:01:12 | reach | 1200 |
| 1 | 2016-06-06 10:01:09 | comments | 92 |
| 2 | 2016-06-06 09:01:09 | like | 94 |
| 2 | 2016-06-06 09:01:11 | reach | 600 |
| 2 | 2016-06-06 09:01:07 | comments | 50 |
| 2 | 2016-06-06 10:01:06 | like | 133 |
| 2 | 2016-06-06 10:01:12 | reach | 1100 |
| 2 | 2016-06-06 10:01:09 | comments | 93 |

每小时,每个帖子的当前数据都会存储在 post_summaries 表中。现在我只想加载帖子中的最新数据。所以对于帖子 2 来说就是

| 2       | 2016-06-06 10:01:06 | like     | 133    | 
| 2 | 2016-06-06 10:01:12 | reach | 1100 |
| 2 | 2016-06-06 10:01:09 | comments | 93 |

我尝试使用以下方法来做到这一点:

 select param, value, MAX(date) from posts_summaries WHERE post_id = 2 GROUP BY param

但这会返回具有最新日期的最旧数据,因此:

| 2       | 2016-06-06 10:01:06 | like     | 94     | 
| 2 | 2016-06-06 10:01:12 | reach | 600 |
| 2 | 2016-06-06 10:01:09 | comments | 50 |

所以它给了我 2016-06-06 09 的行,但日期为 2016-06-06 10。

我可以使用什么查询来获取每个参数的最新数据,其中 post_id = 2

提前致谢!

最佳答案

一种方法是使用 where 子句获取每个参数的最后一个值:

select ps.*
from post_summaries ps
where ps.post_id = 2 and
ps.datetime = (select max(ps2.datetime)
from post_summaries ps2
where ps2.post_id = ps.post_id and ps2.param = ps.param
);

如果您知道总是有三个参数并且它们被插入在一起,那么这会更容易:

select ps.*
from post_summaries ps
where ps.post_id = 2
order by ps.datetime desc
limit 3;

关于mysql 选择每个项目的最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44388617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com