2012-12-18 48 views
1

我需要将set @rank:=0;置于此查询中,但我可以在哪里放置它?我可以在哪里放置SELECT @rank:= 0在此查询中

SELECT @rank:[email protected]+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;");,它的作品。但在另一台服务器中不起作用。

有什么想法?

+2

MySQL版本的另一台服务器? – Gowri

+0

把它作为另一个'INNER JOIN'与嵌套选择:'INNER JOIN(SELECT @rank:= 0)x' – zerkms

+0

+1 @gowri和Gunslinger_你在另一台服务器上的含义是什么? – bonCodigo

回答

2
SELECT @rank:[email protected]+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 

基本上只是在FROM points p之后加, (SELECT @rank:=0) AS dummy

我对这个查询首选布局:

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 ; 
+0

'on子句'中的未知列'p.distributor_id' –

+0

我复制了您的示例。让它工作:P –

+0

仍然'#1054 - 'on子句'中的未知列'p.distributor_id'为最后一个查询的结果:( –

相关问题