在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
答案 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
)