1

このクエリに配置する必要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;");メインクエリの前に使用する必要があります、それは動作します。しかし、別のサーバーでは機能しません。

何か案は ?

4

1 に答える 1

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 ;
于 2012-12-18T12:30:32.177 に答える