我需要在此查询中放置set @rank:=0;
,但我可以在哪里放置它?
SELECT @rank:=@rank+1 AS rank, p.* FROM points p
inner join distributor d
on p.distributor_id=d.id_distributor
where p.month='$prev_month'
and d.group='$dist_group'
ORDER BY p.tot_point DESC
我必须在主查询之前使用mysql_query("set @rank:=0;");
,它是有效的。但在另一台服务器中,它将无法工作。
任何想法?
答案 0 :(得分:2)
SELECT @rank:=@rank+1 AS rank, p.* FROM points p, (SELECT @rank:=0) AS dummy
inner join distributor d
on p.distributor_id=d.id_distributor
where p.month='$prev_month'
and d.group='$dist_group'
ORDER BY p.tot_point DESC
基本上只需在, (SELECT @rank:=0) AS dummy
之后添加FROM points p
。
此查询的首选布局:
SELECT @rank := @rank + 1 AS rank, p.*
FROM
points AS p
CROSS JOIN
(SELECT @rank:=0) AS dummy
INNER JOIN
distributor AS d
ON p.distributor_id = d.id_distributor
WHERE p.month = '$prev_month'
AND d.group='$dist_group'
ORDER BY p.tot_point DESC ;