For at få rækkerne til at stige, skal det være lige så simpelt som at flytte @num
beregning ind i den ydre forespørgsel. Og i den situation er @current_product_id
bør ikke være nødvendig som @num
kan øges direkte.
SET @num :=0, @current_shop_id := NULL, @current_product_id := NULL;
SELECT
*,
/* Perform the row increment in the outer query so it acts on the final rowset */
@num := @num+1 AS row_number
FROM (
SELECT products.shop_id, products.product_id, @current_shop_id := shops.shop_id AS shop_dummy, @current_product_id := products.product_id AS product_dummy
FROM
favorites fav1 INNER JOIN
products ON
fav1.product_id=products.product_id AND
fav1.current=1 AND
fav1.closeted=1 AND
fav1.user_id=30 INNER JOIN
shops ON
shops.shop_id = products.shop_id
ORDER BY shops.shop ASC, products.product_id DESC
) AS rowed_results
WHERE
rowed_results.row_number>=0
AND rowed_results.row_number<(20)
AND shop_id=130