- Зачем?
Ну к примеру мы хотим узнать позицию товара по рейтингу (рейтинг - например показатель популярности товара по количеству просмотров или голосов).
Как оказалось это не так уже и сложно, приведу ниже код.
SELECT `ПОЗИЦИИ`
FROM (SELECT @n := @n +1 AS `ПОЗИЦИИ` , `ПРОСМОТРЫ` , `ИД_ТОВАРА`
FROM `ТАБЛИЦА` , (SELECT @n :=0) AS z
ORDER BY `ПРОСМОТРЫ` DESC) AS x
WHERE `ИД_ТОВАРА` = '1'
(*) - SELECT @n := @n +1 AS `ПОЗИЦИИ` , `ПРОСМОТРЫ` , `ИД_ТОВАРА`
FROM `ТАБЛИЦА` , (SELECT @n :=0) AS z
ORDER BY `ПРОСМОТРЫ` DESC
// Получаем общий результат всего товара с позициями и рейтингом.
SELECT `ПОЗИЦИИ` FROM (*) AS x WHERE `ИД_ТОВАРА` = '1'
// В следущем коде мы сужаем полученый результат (*) до одной нужной позиции с помощью WHERE `ИД_ТОВАРА` = '1'.