Вопрос по mysql, sql – Выберите до и после строк вокруг идентификатора с MySQL

8

Мне нужно получить идентификаторы вокруг идентификатора с MySQL.

Пример:

Идентификаторы & # x200B; & # x200B; в таблице:

2, 4, 5, 9, 11, 15, 19, 22, 25

Мне нужно знать 5 ID вокруг ID 9, например. Запрос должен вернуть:

4, 5, 9, 11, 15

Спасибо!

Ваш Ответ

1   ответ
17

calculate the absolute value of each id where you subtract your ID. order the results and limit the resultset to 5 records.

SQL Statement

SELECT ABS(ID - 9), *
FROM   MyTable
ORDER BY
       ABS(ID - 9)
LIMIT  5

Edit (thx to ypercube for pointing out a possible flaw in this solution)

Если целью является получение 2 идентификаторов слева и двух идентификаторов справа, утверждение можно скорректировать следующим образом.

SELECT * FROM MyTable WHERE ID <= 9 ORDER BY ID DESC LIMIT 3 
UNION ALL
SELECT * FROM MyTable WHERE ID > 9  ORDER BY ID ASC  LIMIT 2
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededMySQL: @variable vs. variable. Whats the difference?
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded@Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededORDER BY ABS(id - @id)Error: User Rate Limit Exceeded@idError: User Rate Limit Exceeded9Error: User Rate Limit Exceeded

Похожие вопросы