Я бы сделал по другому - более гибкий вариант.
таблица 1 (таблица сообщений): id, id_perep, id_login, data, msg
id_login - id_login оправителя
id_perep - id из таблицы 3
data - дата отправки сообщения
msg - текст сообщения
таблица 2: (таблица доступа к переписке): id_login, id_perep, data_sort, count_new_msg
id_login - id login того, кому разрешен доступ к переписке
id_perep - id переписки из таблицы 3, к которой разрешен доступ
count_new_msg - количество непрочитанных сообщений для id_login
таблица 3: (таблица переписок): id, count_msg
После отправки сообщения необходимо обновить поле "data_sort" на текущую дату (по нему будет сортировка для вывода), а также надо обновить (прибавить +1) сообщений всем тем, у кого есть доступ к переписке (в таблице 2)
Запрос, если необходимо вывести все переписки для user 1:
SELECT * FROM `table2` WHERE `id_login` = 'user 1' ORDER BY `data_sort` DESC;
Запрос, если необходимо вывести сообщения к определенной переписке:
SELECT * FROM `table` WHERE `id_perep` = '$id_perep' ORDER BY `id` DESC; // $id_perep - id переписки