데이터를 원하는 순서로 정렬하고, 조회할 수 있는 쿼리를 알아보겠습니다.
- ORDER BY와 LIMIT 사용법 -
1. ORDER BY
select * from students
order by id
- order by 절은 어떠한 컬럼이나 식을 기준으로 출력 결과를 정렬할 때 사용합니다.
- 위의 코드는 students 테이블의 데이터들을 id 컬럼 기준으로 정렬한 것입니다.
- 예를 들어 id가 1부터 10까지 있다면, 1 2 3 4 ~ 9 10 순서로 정렬됩니다.
2. 정렬 옵션 설정
select * from students
order by id desc
- 정렬 옵션은 asc와 desc가 있는데, 기본적으로 asc가 적용되어 있습니다.
- 위 코드는 desc 옵션을 써서 역순으로 정렬한 것입니다.
- 예를 들어 id가 1부터 10까지 있다면, 10 9 8 7 ~ 2 1 순서로 정렬됩니다.
3. 타입별 기본 정렬 순서 (asc)
- 문자 : 영어는 알파벳 순서, 한글은 가나다 순서
- 숫자 : 값이 작은 것부터 정렬
- 날짜 : 예전 날짜부터 최근 날짜로 정렬
3. where 함께 사용
select * from students
where name like '김%'
order by id desc
- students 테이블에서 name의 값이 "김"으로 시작되는 데이터들을 id의 역순으로 정렬한 코드입니다.
- where 절과 order by 절을 함께 사용하는 경우 where 절 뒤에 써주면 됩니다.
4. 다중 컬럼 정렬
select * from students
order by name, score desc, id
- name, gradescore, id 세 개의 컬럼으로 정렬한 코드입니다.
- 1차적으로 name을 기준으로 순서대로 정렬되고, 2차적으로 score를 기준으로 역순으로 정렬됩니다.
- 마지막으로 id를 기준으로 순서대로 정렬됩니다.
* 예시 데이터
name | score | id |
이유진 | 70 | 5 |
김지은 | 30 | 20 |
김지은 | 80 | 15 |
김지은 | 30 | 10 |
- 이와 같은 데이터가 있다고 가정했을 때, 위의 코드 대로 정렬한다면 아래와 같이 출력됩니다.
* 정렬 결과
name | score | id |
김지은 | 80 | 15 |
김지은 | 30 | 10 |
김지은 | 30 | 20 |
이유진 | 70 | 5 |
- "김지은"이라는 동명이인이 3명이 있다고 했을 때, 그 다음 정렬이 score로 넘어갑니다.
- score도 같다면 id의 값으로 정렬됩니다.
5. LIMIT
select * from students
order by name, score desc, id
limit 1, 2
- limit 절은 order by 보다 뒤에 써주면 됩니다.
- limit a, b라고 했을 때, a번째 위치부터 b개의 데이터를 조회하겠다는 뜻입니다.
- 이때, a는 0부터 시작합니다.
* 조회 결과
name | score | id |
김지은 | 30 | 10 |
김지은 | 30 | 20 |
- limit 1, 2로 조회했으므로 1번째 데이터부터 2개가 출력됩니다.
이상으로 MySQL 데이터 정렬 및 부분 조회 방법에 대해 알아보았습니다.
'Web Developer's Story > DATABASE' 카테고리의 다른 글
[MYSQL] 날짜 관련 함수 총정리 (0) | 2020.09.11 |
---|---|
[MYSQL] 문자열 관련 함수 정리 - replace, concat, trim (0) | 2020.09.05 |
[MYSQL] 문자열 자르기 - left, right, substring 함수 (0) | 2020.09.01 |
[MYSQL] SQL 연산자 - BETWEEN, IN, LIKE (0) | 2020.08.29 |
[MYSQL] SQL 쿼리 if, case 문 사용법 (0) | 2020.08.06 |