MySQL - порядок по полю, начиная с определенного значения - PullRequest
0 голосов
/ 16 октября 2019

Я надеюсь, что это даже возможно.

Я получил эту таблицу:

enter image description here

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

SELECT * FROM test ORDER BY score ASC LIMIT 5

Результат: enter image description here

Теперь допустим, кто-то добавляет новый элемент с id 11 and score 2и после этого я делаю:

SELECT * FROM test ORDER BY score ASC LIMIT 5, 5

, чтобы получить оставшиеся строки, тогда я получу id 7 снова

Как я могу предотвратить это? Таким образом, получение оставшихся предметов после id 7

1 Ответ

0 голосов
/ 16 октября 2019

Если вы ORDER BY score, id, тогда вы сможете использовать фильтрацию вместо этого.

SELECT * 
FROM test 
WHERE (score = lastScoredDisplayed AND id > lastIdDisplayed) -- Continue with last score
   OR score > lastScoreDisplayed -- continue on to next score
ORDER BY score, id
LIMIT 5;

Где lastScoreDisplayed и lastIdDisplayed - значения из последней строки вашего предыдущего запроса.

Этот вид техники может даже быть быстрее, чем LIMIT x, x техника;LIMIT x, x должен сортировать весь набор данных каждый раз, в то время как эта техника заканчивается меньшим набором, чем дальше вы идете.

...