繁体   English   中英

MySQL和PHP收件箱更新

[英]Mysql and PHP inbox update

我已经创建了一个收件箱系统。 登录用户可以向其他登录用户发送消息。 数据库中的usermessage表具有两个字段1. userid和2. messageid。 以下是该表的摘录。

userid | messageid
12     | 1
13     | 1
14     | 2
15     | 2
12     | 3
15     | 3
12     | 4
14     | 4

在上述情况下,当用户“ 12”向用户“ 13”发送消息时。 我希望messageid'1'移到表格的底部,以便当用户'12'或'13'检查他的邮箱时,messageid'1'需要作为最近的对话出现在收件箱的顶部。 到目前为止,我已经能够通过删除messageid'1'并为每个用户id插入新查询来实现这一点。 这是我的代码:

DELETE FROM usermessage WHERE userid = '12' and messageid = '1';
INSERT INTO usermessage SET userid = '12', messageid = '1';
DELETE FROM usermessage WHERE userid = '13' and messageid = '1';
INSERT INTO usermessage SET userid = '13', messageid = '1';

是否可以通过一个查询完成此操作。 到目前为止,我无法在与我的问题相关的堆栈流中找到任何确定的答案。

查询没有SORT语句的行不会保证它们将按创建的时间顺序进行排序。 从现在开始,MySQL就有机会给您这样的排序行为。

因此,有必要找到或创建一个客观的排序规则。 它可以是消息的时间戳,也可以是[usermessage]表中的新时间戳列。

还值得注意的是,删除和重新创建行会影响MySQL的过程成本,因为每次删除和插入MySQL时,都需要更新[usermessage]表上的索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM