Oracle:使用"order by"子句显示行号

Igo*_*nko 12 sql oracle

我想知道如何打印sql语句的行号在哪里使用order.目前我尝试ROWNUM但据我所知它只适用于未排序的结果集.

SELECT rownum, a.lg_id, a.full_name, a.sort_order
  FROM activity_type_lang a
  where a.lg_id = 'en'
  order by a.full_name;
Run Code Online (Sandbox Code Playgroud)

TIA

Jus*_*ave 29

除了嵌套查询之外,您还可以使用分析函数

SELECT row_number() OVER (ORDER BY a.full_name),
       lg_id,
       full_name,
       sort_order
  FROM activity_type_lang a
 WHERE a.lg_id = 'en'
 ORDER BY a.full_name
Run Code Online (Sandbox Code Playgroud)

如果要更改关系的处理方式,使用分析函数也会更容易.你可以ROW_NUMBER用RANK或者替换DENSE_RANK.


Igo*_*nko 7

哦.似乎我已经找到了解决方案.

    Select rownum, lg_id, full_name, sort_order from 
(SELECT a.lg_id, a.full_name, a.sort_order
      FROM activity_type_lang a
      where a.lg_id = 'en'
      order by a.full_name);
Run Code Online (Sandbox Code Playgroud)