Есть такой простой запрос: [sql]SELECT id, value FROM table ORDER BY value DESC;[/sql] Выдает просто информацию по убыванию. Гугл не помог, никак не могу сообразить запрос который выдаст позицию определенного id из такой сортировки. Пример: -------------- | id |value| -------------- | 4 | 999 | | 3 | 888 | | 5 | 777 | | 8 | 111 | -------------- id равно 5 - результат запроса должен быть равен трем (позиция строки)
PHP: <?php include('includes\simple.sql.php'); mysql_query("set @n=0"); $q=mysql_query("select id, value, @n:=@n+1 as ii from metro order by value desc"); echo mysql_error(); while ($row=mysql_fetch_assoc($q)) { print_r($row); } ?> например так.
SET @n:=0; SELECT @n:=@n+1 AS N, id, value FROM table WHERE value >= (SELECT value FROM table WHERE id = 1) ORDER BY value DESC; В MySQL 4 работать будет?
хотя [sql]SELECT count( t2.id ) , t1.id FROM table t1, table t2 WHERE t1.id =5 AND t1.value <= t2.value GROUP BY t1.id[/sql] возможно будет быстрее.
Ну, имеется ввиду что там еще несколько переборов и подзапросов, в разных запросах по-разному. [sql] SELECT count( t2.id ) , t1.id FROM table t1, table t2 WHERE t1.id =5 AND t1.value <= t2.value GROUP BY t1.id [/sql] Сей вариант как "основа" оказался быстрее - больно не бить, по лицу и голове тоже .
о, понял, что меня тут напрягает. значения в поле table.value должны быть уникальными. иначе надо добавлять дополнительное поле сортировки