числовая строка в mysql 5.7 - PullRequest
       5

числовая строка в mysql 5.7

0 голосов
/ 03 августа 2020

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...