gpt4 book ai didi

java - 根据最近 24 小时共享 mysql 获取行

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

我正在开发某种社交消息发布应用程序。其中,我需要获取过去24小时的数据趋势数据。我有 3 个表 - 消息、用户、共享

消息 - message_id、内容、user_id、created_at

用户 - user_id、电子邮件和其他数据

分享 - message_id、user_id、created_at

现在,我想要获取的是消息详细信息及其共享总数。我想根据过去 24 小时内的最高分享次数对这些消息进行排序,这会给我带来病毒式传播的消息。

我试过了,可能无效尝试:

SELECT msg.`message_id`, msg.`user_id`, COUNT(share.user_id) share_count
msg.created_at, category FROM
(select * from message_shares ms where created_at>= DATE_SUB(CURDATE(), INTERVAL 24 HOUR)) trending,
`messages` msg
left join message_shares share ON share.message_id = msg.message_id
GROUP by msg.message_id order by msg.id desc

它给了我无效的 share_count 也没有给出有效的结果和消息。而且它没有根据过去 24 小时分享计数对消息进行排序。

我对 MySQL 查询没有太多深入的了解。因此,请向我提供查找这些详细信息的方法或查询。

最佳答案

也许您正在寻找这样的东西:

SELECT messages.message_id, messages.user_id, messages.created_at, 
COUNT(*) AS share_count
FROM messages
INNER JOIN shares ON messages.message_id = shares.message_id
WHERE shares.created_at >= DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY shares.message_id
ORDER BY share_count DESC;

直观的解释是,首先,选择来自 messages 的行,与来自 share 的行连接,并使用 created_at 的条件进行过滤分享以24小时为间隔。作为连接的结果,具有相同消息的行数与该消息所拥有的共享数一样多。然后,您可以按 sharemessage_id 进行分组,因此每条消息都有一个“其共享组”,您可以通过添加 COUNT 来获取每个组的大小(*) 列,现在按组工作。然后,您按 share_count 对行进行排序,并获取包含所需字段的查询投影。

关于java - 根据最近 24 小时共享 mysql 获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45838297/

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