Thay vì đặt các biến trong một SET
riêng biệt , bạn đã thử sử dụng CROSS JOIN
chưa :
$query = "
SELECT `id`,
`rank`,
@num := if(@points = `rank`, @num, @num + 1) as `point_rank`
FROM `said`
CROSS JOIN (SELECT @points:=-1, @num:=0) c
ORDER BY `rank` *1 desc, `id` asc";