回答

收藏

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

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

我想知道如何在使用order的情况下为sql语句打印行号。目前,我尝试过,ROWNUM但据我了解,它仅适用于未排序的结果集。3 `9 P; a( Q- s" V' j' i
SELECT rownum, a.lg_id, a.full_name, a.sort_order
( Y5 H: }& E" d' x0 K3 O  FROM activity_type_lang a
" N0 n( A% o5 K$ h2 N  where a.lg_id = 'en'" ?; Y2 P8 j6 B/ r, S
  order by a.full_name;
* L& F, F. r1 ~5 c3 w7 gTIA
( n$ M$ O9 B1 G                , K0 l7 i5 ]" N4 Q
解决方案:) \6 ?7 ^# y2 P/ z
                . `7 Y. a( u; T  [4 }3 N( Y& ^
' r9 N) j( a) U* t

7 a4 q7 V$ A! h( ?                除了嵌套查询之外,您还可以使用解析函数- p* n) s' m5 u: {, F2 r- N* S  M
SELECT row_number() OVER (ORDER BY a.full_name),+ r6 w) F8 L% `
       lg_id,
+ h5 y: q8 u: y( F! |( ?       full_name,, j2 ]" X$ Q% m# _7 ?. X
       sort_order
  {6 k8 H" O4 Q) Q" ~0 P" j  FROM activity_type_lang a1 O6 R4 N8 U: a5 U9 L3 l+ {
WHERE a.lg_id = 'en'
, |; B( `$ O) E ORDER BY a.full_name
7 Z* `7 G5 i. B( S  ]* c3 Q; a- e如果要更改联系的处理方式,使用分析功能还可以使工作更加轻松。您可以ROW_NUMBER用RANK或替换DENSE_RANK。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则