gpt4 book ai didi

mysql - 消息源的 select 语句

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

我在 MySQL 数据库中有表“Messages”。它有三列:消息 ID,用户身份,消息内容

用户可以自由添加/删除消息。

我想显示一个提要:
1.按id排序显示消息。
2. 如果表中恰好有同一用户连续 2 条以上的消息,则仅显示同一用户的 2 条消息。
3.一次显示10条消息

例如,如果我们有:
msg_id 1, user_id A
msg_id 2, user_id A
msg_id 3, user_id A
msg_id 4, user_id B
msg_id 5, user_id C
msg_id 6, user_id B
msg_id 7, user_id B
msg_id 8,user_id B
msg_id 9,user_id A
msg_id 10,user_id F
msg_id 11,user_id D
msg_id 12,user_id E
...

提要将如下所示:
msg_id 1, user_id A
msg_id 2, user_id A
msg_id 4, user_id B
msg_id 5, user_id C
msg_id 6, user_id B
msg_id 7, user_id B
msg_id 9,user_id A
msg_id 10,user_id F
msg_id 11,user_id D
msg_id 12,user_id E

在 mysql 中实现 feed“Select”语句的最佳方法是什么?

谢谢

最佳答案

如果每个用户连续发布 100 条消息,您将必须获取 500 行...虽然可以在存储过程中执行此操作,但是使用附加列(例如“num”)来计算来自同一用户的一行中的消息要容易得多。从用户 ID 插入消息时,检查发布消息的最后一个用户的 ID 和号码:

SELECT user_id, num FROM messages ORDER BY msg_id DESC LIMIT 1

如果新消息的 user_id 与您从查询中获得的 user_id 匹配,则插入 num+1 ,否则插入 num=1 。然后您可以通过简单的查询获取您的提要:

SELECT * FROM messages WHERE num<=2 LIMIT 10

关于mysql - 消息源的 select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5773920/

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