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