Mysql 5,7
Лог c выглядит следующим образом. Пользователь вводит ник, видит себя и + -5 пользователя
Код работает, если значения разные (1-я таблица), но если значения совпадают, данные теряют сортировку (2-я таблица) . Пожалуйста, помогите мне найти решение. Строки более 200 тыс. Строк в таблице
1-я таблица
'
(
SELECT t1.*
FROM (SELECT *, @i:=@i+1 AS `RowNumber`
FROM mytable, (SELECT @i:=0) AS `RowNumberTable` ORDER BY wins DESC) t1
JOIN mytable t2 ON t2.Nick = "'.$nick.'" AND t1.wins >= t2.wins
ORDER BY wins LIMIT 6
)
UNION ALL
(
SELECT t1.*
FROM (SELECT *, @n:=@n+1 AS `RowNumber`
FROM mytable, (SELECT @n:=0) AS `RowNumberTable` ORDER BY wins DESC) t1
JOIN mytable t2 ON t2.Nick = "'.$nick.'" AND t1.wins < t2.wins
ORDER BY wins DESC LIMIT 5
)
ORDER BY wins DESC'
Number row (rank) - 9712, Nick - SubtleErmine7, Battle - 227, wins - 49.78, damage - 2172.58
Number row (rank) - 9713, Nick - busja1991, Battle - 102, wins - 52.94, damage - 2172.57
Number row (rank) - 9714, Nick - kiiro2-jp-, Battle - 43, wins - 67.44, damage - 2172.53
Number row (rank) - 9715, Nick - WoT_Console, Battle - 111, wins - 56.76, damage - 2172.50
Number row (rank) - 9716, Nick - Actual Mods, Battle - 61, wins - 45.90, damage - 2172.38
Number row (rank) - 9717, Nick - **My_nick**, Battle - 197, wins - 55.84, damage - 2172.34
Number row (rank) - 9718, Nick - SANRAMO, Battle - 82, wins - 50.00, damage - 2172.27
Number row (rank) - 9719, Nick - Solenya86, Battle - 249, wins - 51.81, damage - 2172.23
Number row (rank) - 9720, Nick - Dude4Life73, Battle - 119, wins - 59.66, damage - 2172.20
Number row (rank) - 9721, Nick - SweepingDuck80, Battle - 336, wins - 55.65, damage - 2172.19
Number row (rank) - 9722, Nick - I WOMBO00, Battle - 43, wins - 62.79, damage - 2172.12
2-я таблица
'
(
SELECT t1.*
FROM (SELECT *, @i:=@i+1 AS `RowNumber`
FROM mytable, (SELECT @i:=0) AS `RowNumberTable` ORDER BY Battle DESC) t1
JOIN mytable t2 ON t2.Nick = "'.$nick.'" AND t1.Battle >= t2.Battle
ORDER BY Battle LIMIT 6
)
UNION ALL
(
SELECT t1.*
FROM (SELECT *, @n:=@n+1 AS `RowNumber`
FROM mytable, (SELECT @n:=0) AS `RowNumberTable` ORDER BY Battle DESC) t1
JOIN mytable t2 ON t2.Nick = "'.$nick.'" AND t1.Battle < t2.Battle
ORDER BY Battle DESC LIMIT 5
)
ORDER BY Battle DESC'
Number row (rank) - 63314, Nick - Diesel Black 73, Battle - 110, wins - 42.34, damage - 805.08
Number row (rank) - 63290, Nick - AmazedRiver4, Battle - 110, wins - 48.65, damage - 836.00
Number row (rank) - 63306, Nick - CZARNY-KOT-1986, Battle - 110, wins - 60.36, damage - 2671.19
Number row (rank) - 63298, Nick - Bonker Conkers, Battle - 110, wins - 53.15, damage - 1541.38
Number row (rank) - 63449, Nick - Boat Bomber 95, Battle - 110, wins - 40.91, damage - 1161.75
Number row (rank) - 63593, Nick - **My_nick**, Battle - 111, wins - 55.45, damage - 2086.64
Number row (rank) - 63465, Nick - DirePegasus4677, Battle - 111, wins - 30.91, damage - 727.38
Number row (rank) - 63441, Nick - baratto86, Battle - 111, wins - 45.45, damage - 1316.46
Number row (rank) - 63585, Nick - wws_1980, Battle - 111, wins - 48.18, damage - 1519.14
Number row (rank) - 63457, Nick - chronicseed666, Battle - 111, wins - 40.00, damage - 817.19
Number row (rank) - 63433, Nick - aliakberov1968, Battle - 111, wins - 50.00, damage - 958.22