안녕하세요..
만약
select seq_no, kname , flag
from student
where flag ='1'
order by seq_no asc ;
seq_no | kname | flag |
1 | 홍길동 | 1 |
2 | 이순신 | 1 |
3 | 세종대왕 | 1 |
4 | 김시민 | 1 |
(flag가 1이면 출력) 무조건 상위 3번째까지만 출력할수 있는 방법 없을까요..?
between seq_no '1' and '3' 이렇게하면 seq_no가 1~3까지 가지고 있는 데이터만 출력이 되는데...
만약 seq-no가 '3' 이 flag가 '0'이면 1,2만 출력이 되지 않고 1,2,4가 출력이 될수 있는 방법이 있을까요 ㅠ
-- 1. 정렬 후 Rownum SELECT * FROM (SELECT seq_no, kname, flag FROM student WHERE flag ='1' ORDER BY seq_no ) WHERE ROWNUM <= 3 ; -- 2. Row_number SELECT * FROM (SELECT seq_no, kname, flag , ROW_NUMBER() OVER(ORDER BY seq_no) rn FROM student WHERE flag ='1' ) WHERE rn <= 3 ; -- 3. fetch (12C) SELECT seq_no, kname, flag FROM student WHERE flag ='1' ORDER BY seq_no FETCH FIRST 3 ROWS ONLY ;