[쿼리 공부] 기초 7 상위 n개 레코드 (Mysql limit n, Oracle rownum <= n)
기초 7장 바로 들어갑니다.
[해설]
모든 프로그래머스 SQL 문제들은 테이블 명, 테이블 스키마(테이블의 구성), 쿼리 목표, 그리고 예시로 구성이 됩니다.
테이블에서 현재 타깃 테이블을 기준으로 레코드 값을 최대 몇 개를 출력시킬지를 보여주는 문법입니다.
mysql
... limit n;
oracle
... where rownum <= n
이런 형태로 지원이 됩니다.
[정답]
전 세계 99%의(제 뇌피셜이지만 거의 모두 동의하는 부분) RDBMS SQL문법은 Oracle 아니면 Mysql로 정리가 됩니다. (SQL Server혹은 임베디드 SQL의 문법이 나머지 1%라고 봅니다. 사실상 많이들 안 쓰죠... 물론 어디까지나 제 뇌피셜입니다. 제 주장을 반박하시거나 동의하시는 고인이 있으시다면 댓글로 달아주세요. 전 컴공 전공자가 아닙니다. 하지만, 김풍 형도 냉부해에서 요리 지식 자랑하잖아요 ㅋㅋ)
그래서, 어쨌거나 저쨌거나 프로그래머스에서도 Mysql과 Oracle 두 가지 버전의 쿼리를 요구합니다. 꼭 프로그래머스가 아니더라도 공부하실 때 두 가지 문법만 고려하시면 될 거 같습니다.
Mysql 문법 정답
SELECT Name from ANIMAL_INS order by Datetime asc limit 1;
Oracle 문법 정답
Select Name from (SELECT Name from ANIMAL_INS order by Datetime asc) where rownum <= 1;
[SQL Insight]
TOP라는 구 문법이 있다는데, 쓰는 걸 본 적은 없습니다. 상당히 무거운 함수라 쓰지 말라고 하더군요...
limit, rownum이 TOP와 어떻게 다른지 까지는 알 수 없으나 가장 권장되는 방식인 거 같네요.
끝