我在哪里可以在此查询中放置SELECT @rank:= 0

时间:2012-12-18 12:18:59

标签: php mysql sql variables

我需要在此查询中放置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;");,它是有效的。但在另一台服务器中,它将无法工作。

任何想法?

1 个答案:

答案 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 ;