2014-07-24 43 views
0

在MySQL中,我想要输出表中特定列的不同值以及从0到行数的唯一行号 - 1.因此,我想使用以下查询。结合行号和不同

SET @rownr=0; 

SELECT @rownr:= @rownr+1 as rank, DISTINCT a.brand_id AS brand 
FROM vda.articles a 

MySQL工作台抱怨语法不正确:它不指望DISTINCT在那个位置。事实上,如果我删除了关键字DISTINCT,查询就会运行。有没有办法输出如下所示的表格?注意:我不能使用GROUP BY而不是DISTINCT,因为变量rownr经常更新。

rownr brand 
0  6 
1  71 
2  72 
3  34 
+0

使用它作为一个子查询。 –

+0

@Nishanti:那是什么意思? – physicalattraction

+0

我注意到,如果我切换排名和品牌顺序,这不是非法的语法。 – physicalattraction

回答

2

只需检查下面的代码。它应该做的伎俩..虽然我不太熟悉MySQL语法。你可以得到一个想法。

我基本上在sub-query获得所有不同的品牌。并在外部查询中使用增量行号显示它。

SET @rownr=0; 
SELECT @rownr:= @rownr+1 as rank, brand from 
(select DISTINCT a.brand_id AS brand 
    FROM vda.articles a) as B 

试试此查询以及。它也可以工作,并且根据syntax of DISTINCT正确。但检查你是否得到正确的输出。我只是在关键字后面加上DISTINCT关键字。

SELECT DISTINCT @rownr:= @rownr+1 as rank, 
a.brand_id AS brand FROM vda.articles a 
+0

试试这个查询。它也会工作。但检查你是否得到正确的输出。 'SELECT DISTINCT @rownr:= @ rownr + 1 as rank,a.brand_id AS品牌 FROM vda.articles a' –

0

,你可以用它在子查询

set @rownr=0; 
select @rownr:= @rownr+1 ,brand_id from(
    select **DISTINCT** brand_id as brand_id FROM articles 
)