MySQL и PHP входящие обновления - PullRequest
0 голосов
/ 29 марта 2012

Я создал систему входящих сообщений.Зарегистрированный пользователь может отправить сообщение другим зарегистрированным пользователям.Таблица пользовательских сообщений из базы данных имеет два поля: 1. идентификатор пользователя и 2. сообщение.Ниже приводится выдержка из этой таблицы.

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

В описанной выше ситуации, когда пользователь «12» отправляет сообщение пользователю «13».Я хочу, чтобы идентификатор сообщения «1» переместился в нижнюю часть таблицы, чтобы, когда пользователь «12» или «13» проверял свой почтовый ящик, идентификатор сообщения «1» должен отображаться в верхней части папки «Входящие» как недавний разговор.До сих пор мне удавалось добиться этого, удалив идентификатор сообщения '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';

Возможно ли это сделать одним запросом.До сих пор мне не удалось найти какой-либо определенный ответ в стеке, связанный с моей проблемой.

1 Ответ

0 голосов
/ 29 марта 2012

Запрос строк без оператора SORT не дает гарантии того, что они будут отсортированы в созданном порядке времени. Это просто шанс, что MySQL с тех пор дает вам такое поведение сортировки.

Поэтому необходимо, чтобы вы нашли или создали объективное правило сортировки. Это может быть метка времени сообщения или новый столбец метки времени в вашей таблице [usermessage].

Также заметно, что удаление и повторное создание строк повлияет на стоимость процесса MySQL, поскольку MySQL будет необходимо обновлять индексы в таблице [usermessage] при каждом удалении и вставке.

...