programing

Oracle에서 선택한 행에서 행 번호를 가져오는 방법

powerit 2023. 7. 7. 21:10
반응형

Oracle에서 선택한 행에서 행 번호를 가져오는 방법

데이터베이스에서 몇 개의 행을 선택하는 중입니다. 예:

select * from student where name is like %ram%

결과:

ID   Name     email          Branch
7    rama    rama@gmail.com    B1
5    ramb    ramb@gmail.com    B2
3    ramc    ramc@gmail.com    B3
8    ramd    ramd@gmail.com    B4
11   rame    rame@gmail.com    B5
12   ramf    ramf@gmail.com    B6
14   ramg    ramg@gmail.com    B7

어느 지점이 B5인지 행 번호를 알아야 합니다.예상 값은 "5"입니다.

누가 이것을 어떻게 구현할 것인지 쿼리에서 제안해 주시겠습니까?

테이블에는 고유한 순서가 없습니다.따라서 행 번호 자체는 의미 없는 메트릭입니다.

그러나 더 강력한 ROWNUM psue 열 또는 분석 함수를 사용하여 결과 집합의 행 번호를 얻을 수 있습니다.

테이블에 대한 주문이 없기 때문에 두 가지 모두 작업하려면 명시적인 ORDER BY 절이 필요합니다.

select rownum, a.*
  from ( select *
           from student
          where name like '%ram%'
          order by branch
                ) a

또는 분석 쿼리를 사용합니다.

select row_number() over ( order by branch ) as rnum, a.*
  from student
 where name like '%ram%'

구문where name is like ...틀렸습니다. IS가 필요 없기 때문에 제거했습니다.

여기서 ORDER BY는 이진 정렬에 의존하므로 분기가 B가 아닌 다른 항목으로 시작하면 결과가 다를 수 있습니다.b보다 큼B.

당신은 그냥 할 수 있습니다

select rownum, l.* from student  l where name like %ram%

이렇게 하면 행이 가져올 때 행 번호가 할당됩니다(물론 순서가 보장되지 않음).

먼저 주문하려면 다음을 수행합니다.

select rownum, l.*
  from (select * from student l where name like %ram% order by...) l;

제 생각에는

select rownum st.Branch 
  from student st 
 where st.name like '%ram%'

간단한 방법입니다. LIKE 문에 따옴표를 하나 추가해야 합니다.사용하는 경우row_number()추가해야 합니다.over (order by 'sort column' 'asc/desc')예를 들어:

select st.branch, row_number() over (order by 'sort column' 'asc/desc')  
  from student st 
 where st.name like '%ram%'

아래 쿼리는 오라클에서 행 번호를 가져오는 데 도움이 됩니다.

SELECT ROWNUM AS SNO,ID,NAME,EMAIL,BRANCH FROM student WHERE NAME LIKE '%ram%';

언급URL : https://stackoverflow.com/questions/14557751/how-to-get-row-number-from-selected-rows-in-oracle

반응형