Если у меня есть таблица случайных значений в таблице sql, как я могу экспортировать и отображать их как грабли, а не как абсолютное значение ... например ... если три значения - 30, 85 и 90, как мне получить 30? отображать как 1 или 1, 85 как 2 или 2 и т. д.
sql вывод в виде рейтинга
comment
возможный дубликат Как лучше всего генерировать ранги в MYSQL?
- person JohnFx   schedule 20.10.2010
Ответы (2)
MySQL не поддерживает аналитические функции (ROW_NUMBER, RANK, DENSE_RANK), которые обычно используются для подобных требований.
Использовать:
SELECT @rownum := @rownum + 1 AS ranking
FROM YOUR_TABLE t
JOIN (SELECT @rownum := 0) r
ORDER BY t.value
Пример:
SELECT x.num,
@rownum := @rownum + 1 AS ranking
FROM (SELECT 30 AS num
UNION ALL
SELECT 85
UNION ALL
SELECT 90) x
JOIN (SELECT @rownum := 0) r
ORDER BY x.num
Вы можете использовать:
SELECT (SELECT COUNT(*)
FROM YOUR_TABLE b
WHERE b.value <= a.value) AS ranking
FROM YOUR_TABLE a
... но дубликаты будут иметь одинаковое ранжирование. И вы должны убедиться, что сравнение значений идет в правильном направлении.
person
OMG Ponies
schedule
20.10.2010
Пытаться:
set @i = 0;
select myValue,
@i:=@i+1 as Ranking
from myTable
order by myValue ASC
person
p.campbell
schedule
20.10.2010
Вы, наверное, хотите, чтобы там был
ORDER BY myValue ASC
.
- person Byron Whitlock; 20.10.2010