MySQL Sort by DESC приводит к разрыву в записях.Отсутствует пропущенная запись с сортировкой ASC? - PullRequest
1 голос
/ 15 января 2012

Я собираюсь воздержаться от публикации своего массивного блока кода и просто начать именно то, к чему я прибил выпущенный.

Я выполняю этот запрос:

...
SELECT id, Title, images, recdate, 'item' AS type
  FROM ads_list
 WHERE to_days(now())<= (to_days(recdate)+14)
 ORDER BY recdate DESC
 LIMIT $offset, $listsperpage
...

Это для сценария нумерации страниц. My $ offset - это просто счет текущей позиции записи, а для $ listsperpage задано произвольное число для страниц (и установлено значение 24). Так что на странице должно быть 24 результата ...

Все работает отлично, ЗА ИСКЛЮЧЕНИЕМ, когда я запускаю свой запрос в DESC с помощью сортировки по повторным датам, в моем массиве на первой странице выводится только 23 записи ??

И если я запускаю с сортировкой ASC, есть 24 записи, которые отображаются, как и ожидалось, на каждой странице.

Мое поле recdate отформатировано так:

2012-01-14 07:10:33
2012-01-14 07:10:35
2012-01-14 07:10:38
2012-01-14 07:10:30 ...

Я также попытался выполнить сортировку DESC по id (авто), и все же первый массив результатов содержит только 23 записи, но все массивы - это ожидаемые записи.

Я обнаружил, что «отсутствующая» запись из первого результата фактически выдвинута вперед, так что, как будто в результатах с помощью DESC просто разрыв. И этот массив полностью выдвигается на последнюю страницу результатов. Таким образом, все элементы сдвигаются на один слот, как кажется.

Я не хотел публиковать весь свой блок кода, потому что это очень много, и я потратил несколько часов на тестирование и тестирование вариантов своего кода, поэтому я действительно думаю, что это как-то связано с сортировкой SQL.

Я просто не вижу, чтобы мой DESC вызывал эту странность, и сортировка ASC показывается как обычно.

1 Ответ

0 голосов
/ 16 января 2012

Наконец-то разобрался с этим кошмаром!

Я до сих пор не могу объяснить, почему это происходит, но, по крайней мере, сейчас я получаю ожидаемые результаты в полном объеме.

В цикле while я проверяю $ list ["images"]! = "". Оказывается, при использовании сортировки DESC по recdate, есть пустое значение массива, поэтому оно оценивается как true и «отбрасывает» этот листинг со страницы. Поэтому я добавил $ list ["images"] == "", и теперь изображение и данные отображаются для этого элемента массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...