반응형
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
반응형
'programing' 카테고리의 다른 글
PHP MariaDB PDO 수 중복 값 (0) | 2023.07.07 |
---|---|
ePub 형식을 읽는 중 (0) | 2023.07.07 |
ggplot을 사용하여 플롯을 만들 때 hjust와 vjust는 무엇을 합니까? (0) | 2023.07.07 |
Oracle PL/SQL 문자열 비교 문제 (0) | 2023.07.07 |
Windows 7에서 명령 프롬프트에서 Python 프로그램을 실행하는 방법은 무엇입니까? (0) | 2023.07.07 |