Получение упорядоченных строк частично - PullRequest
0 голосов
/ 03 ноября 2018

Привет разработчикам,

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

select `name`,`points` from users order by `points` desc

Для повышения производительности я не хочу получать от каждого пользователя всех пользователей, кроме 10+ и 10, потому что я не хочу показывать весь список рейтинга в программе в любом случае. Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 03 ноября 2018

Один метод использует подзапросы и union all:

(select name, points
 from users
 where points <= (select u2.points from users u2 where u2.name = ?)
 order by points desc
 limit 11
) union all
(select name, points
 from users
 where points > (select u2.points from users u2 where u2.name = ?)
 order by points asc
 limit 10
) ;

Возвращает 21 строку с указанным пользователем.

...