Betterthanyou написав:У списку впорядкованому по спаданню
Betterthanyou написав:В таблиці присутні такі рядки:
Betterthanyou написав:Як по сортувати зрозуміло - команда "ORDER BY"
Якось все заплутано, так це існуюча таблиця, яка є відсортована чи щось інше?
Бо якщо у Вас є така таблиця, то все що Вам потрібно дізнатися з якого запису робити вибірку, а потім:
SELECT
*
FROM
sort_tab
LIMIT {N}, 11;
Якщо ж немає таблиці з впорядкованими даними + scores не унікальні, то можна щось таке:
SELECT
*
FROM
(SELECT * FROM tab WHERE scores >= ( SELECT scores FROM tab WHERE id = {id} ) AND id <> {id} ORDER BY scores LIMIT 5 ) AS tab1
UNION
SELECT
*
FROM
( SELECT * FROM tab WHERE scores < ( SELECT scores FROM tab WHERE id = {id} ) ORDER BY scores DESC LIMIT 5 ) AS tab2
UNION
SELECT * FROM tab WHERE id = {id} ORDER BY scores DESC, FIELD( id, {id} );
Хоч, краще конкретні дані підставити замість ось цих запитів:
SELECT scores FROM tab WHERE id = {id}
SELECT scores FROM tab WHERE id = {id}
SELECT * FROM tab WHERE id = {id}
Betterthanyou написав:Але як це дізнатися ?
Ну тут знову повертаємося до того, що ж це таке і де воно існує - список, таблиця,...?
Якщо ж це відсортована таблиця, то можна так (MySQL 8 -> window functions ):
SELECT num FROM ( SELECT id, row_number ( ) over ( ) AS num FROM sort_tab ) AS tab1 WHERE id = {id}
Далі вираховуєте, щось типу цього -> (num-1-5), а також не забувайте враховувати, що може вийти від'ємне число...