powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Получить номер строки из таблицы по одному ключу и в порядке убывания по другому ключу
4 сообщений из 4, страница 1 из 1
Получить номер строки из таблицы по одному ключу и в порядке убывания по другому ключу
    #39350707
ЛеонидD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер. Надеюсь, не слишком мудрено назвал тему.

Необходимо по ключу `steamid` получить номер строки в таблице в порядке убывания по ключу `dmg`. Сейчас таблица `SurfStats`выглядит следующим образом:


Почитал статьи, и так я смог приблизиться к цели:

Код: sql
1.
2.
SET @id := 0;
SELECT @id := @id + 1 AS row_number, `SurfStats`.* FROM `SurfStats` ORDER BY  `SurfStats`.`dmg` DESC;




И вот здесь мне не хватает опыта и знаний в том плане, что делать дальше, чтобы получить вывод строки по ключу `steamid`? Думал так,

Код: sql
1.
2.
SET @id := 0;
SELECT @id := @id + 1 AS row_number, `SurfStats`.* FROM `SurfStats` WHERE (`SurfStats`.`steamid` = 'STEAM_0:0:495419218') ORDER BY  `SurfStats`.`dmg` DESC;



но потом осознал, что так счетчик @id не будет работать... .

Как же все-таки можно получить 'row_number' с запроса, который выводит список таблицы в порядке убывания по ключу 'dmg' по ключу `steamid`?

...
Рейтинг: 0 / 0
Получить номер строки из таблицы по одному ключу и в порядке убывания по другому ключу
    #39350738
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо валить все задачи в одну кучу...
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT dummy1.*
FROM (
    SELECT @id := @id + 1 AS row_number, `SurfStats`.* 
    FROM `SurfStats`, (SELECT @id := 0) AS dummy0
    ORDER BY  `SurfStats`.`dmg` DESC
) AS dummy1
WHERE dummy1.`steamid` = 'STEAM_0:0:495419218'
...
Рейтинг: 0 / 0
Получить номер строки из таблицы по одному ключу и в порядке убывания по другому ключу
    #39350852
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если поле `SurfStats`.`dmg` уникальное или достаточно уникальное (т.е. повторы крайней редки и их можно игнорировать), то так:
Код: sql
1.
2.
3.
SELECT t2.*, (SELECT COUNT(*) FROM SurfStats t2 WHERE t2.dmg>t1.dmg)
FROM SurfStats t2
WHERE t2.steamid = 'STEAM_0:0:495419218'


Понадобятся два отдельных индекса на поля dmg и steamid.
Строгое неравенство заменить на нестрогое по необходимости.

Если же повторов в поле dmg много, то нужно уточнять задачу. Что делать, когда искомая запись имеет значение dmg, которое повторяется множество раз?
...
Рейтинг: 0 / 0
Получить номер строки из таблицы по одному ключу и в порядке убывания по другому ключу
    #39350948
ЛеонидD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!

Повторение значения dmg очень и очень редкое и его спокойно можно игнорировать.

Подзапросы - прекрасная вещь.

Ещё раз всем спасибо за помощь!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Получить номер строки из таблицы по одному ключу и в порядке убывания по другому ключу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]