Привет. Имеется таблица accounts, примерно с такими данными: name | c1| c2 test1| 5 | 0 test2| 1 | 6 test3| 5 | 11 test4| 0 | 0 ... Мне нужно было получить позицию аккаунта в рейтинге по сумме двух колонок c1 и c2. Сделал это так: Код (Text): 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 месте (то есть рядом с этим аккаунтом)?
Код (Text): SET @n:=0; SELECT @n:=@n+1 AS `num`, t.* FROM ( SELECT `name`, (`c1` + `c2`) AS `total` FROM `accounts` ) AS t ORDER BY `total` DESC LIMIT 3;