MySQL сортировка таблицы и получение позиции строки - PullRequest
1 голос
/ 07 декабря 2010

У меня проблема в mysql, у меня есть таблица ID и номер ... что-то вроде этого

ID -------- number
3  -------- 340
1  -------- 10
12 -------- 23

А теперь я хотел бы выбрать по ID, скажем, ID = 3и есть ли способ сказать, какова позиция этой строки в отсортированной таблице?В этом случае ID = 3 будет иметь первую позицию, потому что наибольшее значение в номере.У ID = 12 будет вторая позиция ... и т. Д.

Ответы [ 3 ]

1 голос
/ 07 декабря 2010
set @row_number:=0;
select * from 
  (select ID, @row_number:=@row_number+1 from your_table order by number desc) 
   as row_to_return 
where ID=3;

Приведенный выше запрос можно изменить, чтобы заменить ID на все, что вам нужно.
Однако для простого использования ORDER BY number DESC лучше и оптимизирован.

0 голосов
/ 07 декабря 2010

попробуйте этот запрос, если это полезно.

SELECT ID,number FROM table_name ORDER BY number DESC;

Спасибо.

0 голосов
/ 07 декабря 2010

Если вы возвращаете набор результатов через PHP, вы можете использовать PHP, чтобы определить позицию значения '3' в массиве для поля идентификатора, используя array_search

Илиизмените ваш SQL следующим образом:

select
@rownumber:=1+@rownumber as 'rownumber',
id_field, number_field
from yourtable, (SELECT @rownumber:=0) rownumber order by number_field DESC

Это добавит дополнительный столбец 'rownumber', который предоставляет номер каждой строки

...