आपके पास सही विचार है। हालांकि, MySQL अभिव्यक्तियों के मूल्यांकन के क्रम की गारंटी नहीं देता है। साथ ही, आपके पास group by position
. है सबक्वेरी में।
तो मुझे लगता है कि आप शायद चाहें:
SELECT . . .
FROM (SELECT name, surname, position, value, points,
(@num := if(@type = position, @num + 1,
if(@type := position, 1, 1)
)
) AS row_number
FROM players p CROSS JOIN
(SELECT @num := 0, @type := '') params
WHERE (name LIKE '%$searchphrase%' OR surname LIKE '%$searchphrase%') AND
value >= '$minvalue' AND value <= '$maxvalue'
ORDER BY position
) x
WHERE x.row_number <= 2