我已经创建了一个收件箱系统。用户登录可以向其他登录用户发送消息。来自数据库的usermessage表有两个字段1. userid和2. messageid。以下是此表的摘录。Mysql和PHP收件箱更新
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'并插入作为每个用户标识的新查询来实现此目的。这是我的代码:
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';
是否有可能通过一个查询来完成此操作。到目前为止,我无法在与我的问题相关的stackflow中找到任何明确的答案。
OMG。你有没有听说过正常化数据和良好的相对数据库设计? – heximal 2012-03-28 22:52:56
用户消息表上的时间戳字段(使用类似于ON UPDATE CURRENT_TIMESTAMP的内容)和用于显示收件箱的select上的更明智的ORDER BY可以更好地实现此目的。 – cmbuckley 2012-03-28 22:53:54
不应该12发送到13只是创建一个新的行,你不应该回收消息ID。 – 2012-03-28 22:54:29