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。 |
|
|
|
|
|