Моя таблица имеет вид ниже
|ID |ВРЕМЯ |ПОЛЬЗОВАТЕЛЬ |ДАННЫЕ |
|1 |1542785267683 |A |привет |
|2 |1542785385809 |Б |привет |
|3 |1542785385809 |C |эй |
|4 |1542785385809 |D |hii |
|5 |1542785385809 |E |hola |
|6 |1542795485058 |F |hiiiii |
Таблица будет в том же виде, что и выше, с тысячами строк.Я хочу получить последние 3 строки, а затем следующие 3 строки из таблицы, чтобы отобразить строки для пользователя, так же, как вы просматриваете сообщения, когда проводите вверх в приложениях для обмена сообщениями.
Я пробовал следующие методы:
- Извлечение по времени последнего сообщения первого выбранного чанка.Но это невозможно, поскольку две или более строки могут быть в одно и то же время, и это приведет к отображению одной и той же строки дважды.
SELECT * FROM MessageM WHERE TIME_RECEIVED
SELECT * FROM MessageM, ГДЕ TIME_RECEIVED <1542785385809 ЗАКАЗАТЬ ПО ВРЕМЕНИ_RECEIVED DESC LIMIT 3;# Оставляет две строки </p>
SELECT * FROM MessageM WHERE TIME_RECEIVED <= 1542785385809 ORDER BY TIME_RECEIVED DESC LIMIT 3;# дублирует два ряда </p>
Я прочитал ответ, упомянутый ниже
MySQL: получить большой выбор по фрагментам
Мои требования почти такие же, кроме таблицы, которую можно обновитьв промежутке времени, когда были получены фрагменты.
Так При использовании следующих запросов
SELECT * ОТ сообщения ORDER BY TIME DESC LIMIT 0, 2;
SELECT* ОТ сообщения ЗАКАЗ ПО ВРЕМЕНИ DESC LIMIT 2, 4;
Если между последовательными выборами будет вставлена новая строка, та же строка, уже отображаемая, снова будет получена для следующего оператора выбора.Блокировка вообще невозможна.
Может решить проблему с помощью автоинкрементного столбца или Любые другие методы, такие как добавление нового столбца с некоторым другим ограничением, решат проблему или какую-либо форму раздела.
Я планировал использовать следующий запрос
ВЫБРАТЬ * ОТ сообщения ГДЕ ВРЕМЯ <= 1542785385809 И ID НЕ ВХОДИТ (5, 4) ЗАКАЗАТЬ ПО ВРЕМЕНИ DESC LIMIT 3; </p>
Получить время последней строки и получить идентификаторы всех строк с заданным временем из найденных строк.При запросе во второй раз введите идентификаторы в состоянии NOT IN.
Есть ли другой лучший способ сделать это.Может ли автоинкрементный столбец решить проблему или любые другие методы, такие как добавление нового столбца с некоторым другим ограничением или какой-либо формой раздела.