回答

收藏

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

技术问答 技术问答 766 人阅读 | 0 人回复 | 2023-09-14

我想知道如何在使用order的情况下为sql语句打印行号。目前,我尝试过,ROWNUM但据我了解,它仅适用于未排序的结果集。2 q/ ]' U, w8 a0 E  p8 O5 i
SELECT rownum, a.lg_id, a.full_name, a.sort_order
+ [7 j2 P8 |6 v/ V3 K  FROM activity_type_lang a
* E7 p2 l" @, P$ j: ?2 @& ]. S4 g  where a.lg_id = 'en'
5 E) X" v- {3 ]  order by a.full_name;
, k2 w6 Z6 S( jTIA1 k; v/ Z, i% C+ s
               
9 w( ]- N0 f  g: a, A; c解决方案:8 G% l. I1 U/ B5 ?9 _' J
               
9 T1 n. D9 x& @% X* l/ b
, }8 e1 R& l; y' e5 v8 i/ \8 ^  i0 A3 x6 U
                除了嵌套查询之外,您还可以使用解析函数
/ K7 H  T' h+ B7 a5 h" g, cSELECT row_number() OVER (ORDER BY a.full_name),
  ^6 s# I! J" N1 r  K       lg_id,
( g- L: e2 f- {0 h! C       full_name,
. Z0 e. f: E1 A1 ?! D6 W2 |       sort_order$ T8 Y  ~9 Z) R7 D4 t' }, h
  FROM activity_type_lang a9 n. m4 k9 F, a
WHERE a.lg_id = 'en'' O" ^' S: Z" ?: A3 a
ORDER BY a.full_name
) ~3 D/ w& I* Z1 H% M) w如果要更改联系的处理方式,使用分析功能还可以使工作更加轻松。您可以ROW_NUMBER用RANK或替换DENSE_RANK。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则