MYSQL - LIMIT внутри диапазона - PullRequest
1 голос
/ 13 июня 2011

Я построил слайдер, используя AJAX для результатов, и у меня есть небольшая проблема следующим образом:

предполагается, что таблица с набором 1 to 15 строк, но я работаю только с первыми 9 строками; в 1-й этап i (SELECT * FROM table ORDER BY id DESC LIMIT 9) и использовать результаты для построения навигации и для отображения первой группы.

Затем на 2-й стадии я запрашиваю эти 9 пунктов, 3 каждый раз из слева , поэтому я (SELECT * FROM table WHERE id > '$1' ORDER BY id DESC LIMIT 3) или вправо , поэтому я (SELECT * FROM table WHERE id < '$1' ORDER BY id DESC LIMIT 3) где $1 - последний элемент каждой группы, поэтому (13 || 11 || 7) из (15, 14, 13) || (12, 11, 10) || (9, 8, 7).

Хорошо, представьте себе более подробное объяснение, как показано ниже:

<- [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 ] ->
   [    15     ]  [    14     ]  [    13     ]

Хорошо, проблема в , когда "правильный запрос" достигает last item: 7, набор результатов равен (6, 5, 4), что, очевидно, правильно, но не в нашем диапазоне 15 до 7 , вместо этого для моей цели он ничего не должен возвращать. Как я могу сделать это с одним запросом SQL?


просто ради: вот слайдер demo (последний элемент справа, используя стрелку вправо, находится вне диапазона); надеюсь, это не слишком размытый вопрос, потому что мне было трудно понять, как объяснить проблему. ;)

1 Ответ

1 голос
/ 13 июня 2011

На 1-м этапе вы можете записать минимальный идентификатор в возвращаемых строках.Затем в других ваших запросах просто добавьте условие WHERE, чтобы убедиться, что выбранные идентификаторы больше или равны этому минимуму, например

SELECT * FROM table WHERE id <'$1' AND id >='$min' ORDER BY id DESC LIMIT 3

в случае, когда ваш минимальный идентификатор равен 7, и "право""запрос выполнен со значением 7, он ничего не вернет.Если я правильно понимаю ваш вопрос, это то поведение, которое вам нужно.

...