पंक्तियों को बढ़ाने के लिए, यह उतना ही सरल होना चाहिए जितना कि @num
. को स्थानांतरित करना बाहरी क्वेरी में गणना। और उस स्थिति में, @current_product_id
@num
. के रूप में आवश्यकता नहीं होनी चाहिए सीधे वृद्धि कर सकते हैं।
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