За последние 24 часа нас посетили 9646 программистов и 479 роботов. Сейчас ищут 245 программистов ...

Узнать соседние позиции в рейтинге

Тема в разделе "MySQL", создана пользователем Woods, 9 июн 2020.

Метки:
  1. Woods

    Woods Активный пользователь

    С нами с:
    5 дек 2015
    Сообщения:
    4
    Симпатии:
    0
    Привет.
    Имеется таблица accounts, примерно с такими данными:
    name | c1| c2
    test1| 5 | 0
    test2| 1 | 6
    test3| 5 | 11
    test4| 0 | 0
    ...

    Мне нужно было получить позицию аккаунта в рейтинге по сумме двух колонок c1 и c2.
    Сделал это так:
    Код (Text):
    1. SELECT name, (c1 + c2) as total, (SELECT count(*)+1 FROM accounts WHERE (c1 + c2) > total) as position FROM accounts WHERE name = 'test2'
    Получится аккаунт test2 будет на втором месте. Как теперь можно получить аккаунты, которые стоят на 1 и 3 месте (то есть рядом с этим аккаунтом)?
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.199
    Симпатии:
    377
    Код (Text):
    1. SET @n:=0;
    2. SELECT @n:=@n+1 AS `num`, t.*
    3. FROM (
    4.     SELECT `name`, (`c1` + `c2`) AS `total`
    5.     FROM `accounts`
    6. ) AS t
    7. ORDER BY `total` DESC
    8. LIMIT 3;