我有一张表
31
我正在寻找输出 像
Apple
Apple
Grape
Grape
Grape
Orange
Orange
Orange
因此它应该区分值并获得一个自动递增的数字。
到目前为止我的努力是这样的。
1 Apple
2 Grape
3 Orange
在大型数据集上执行此操作的最佳方法是什么。
答案 0 :(得分:2)
我认为您正在寻找dense_rank()
:
select dense_rank() over (order by Fruit) as id, Fruit
from mytable;
返回原始行。
如果您只需要每fruit
行一行,请选择行,然后使用row_number()
:
select fruit, row_number() over (order by fruit)
from (select distinct fruit from mytable) t;
不要对列别名使用单引号。