我已經創建了一個收件箱系統。用戶登錄可以向其他登錄用戶發送消息。來自數據庫的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