结合行号和不同

时间:2014-07-24 09:58:11

标签: mysql sql distinct row-number

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

SET @rownr=0;

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

MySQL Workbench抱怨语法不正确:它不期望该位置有DISTINCT。实际上,如果我删除关键字DISTINCT,则运行查询。有没有办法输出表格如下所示?注意:我不能使用GROUP BY而不是DISTINCT,因为变量rownr经常更新。

rownr   brand
0       6
1       71
2       72
3       34

2 个答案:

答案 0 :(得分: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

也请尝试此查询。根据{{​​3}},它也可以正常工作。但检查一下你是否得到了正确的输出。我只是在select关键字之后放置DISTINCT关键字。

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

答案 1 :(得分:0)

您可以在子查询中使用它

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