mysql - 정렬

Jina·2020년 5월 28일
0

Mysql

목록 보기
2/4

ORDER BY

order by 구를 이용하여 정렬하고 싶은 열을 지정
지정된 열의 값에 따라 행 순서가 변경됨

selectfrom 테이블 where 조건식 order by

조건이 필요없는 경우에는 where 조건식 생략 가능

selectfrom 테이블 order by
mysql> select * from sub_regions;
+-----+---------------------+-----------+
| id  | name                | region_id |
+-----+---------------------+-----------+
|   1 | 강남역                |         1 |
|   2 | 신사/가로수길           |         1 |
|   3 | 신촌/홍대              |         1 |
|   4 | 합정/연남              |         1 |
|   5 | 종로/중구              |         1 |
|   6 | 건대/뚝섬              |         1 |
		.
		.
    		.
| 118 | 포항                  |        16 |
| 119 | 경산                  |        16 |
| 120 | 안동                  |        16 |
| 121 | 영천                  |        16 |
| 122 | 예천                  |        16 |
| 123 | 청도                  |        16 |
| 124 | 광주                  |        17 |
+-----+----------------------+-----------+
 mysql> select * from sub_regions order by name;
+-----+---------------------+-----------+
| id  | name                | region_id |
+-----+---------------------+-----------+
|  31 | 가평                 |         2 |
|   7 | 강남/서초구            |         1 |
|   1 | 강남역                |         1 |
|  63 | 강릉                 |         4 |
|  14 | 강북/도봉구            |         1 |
|  13 | 강서/양천구            |         1 |
		.
		.
    		.
|  49 | 평택                 |         2 |
| 118 | 포항                 |        16 |
|  52 | 하남                 |         2 |
| 102 | 하동                 |        11 |
|   4 | 합정/연남             |         1 |
| 105 | 홍성                 |        12 |
|  30 | 화성                 |         2 |
|  70 | 횡성                 |         4 |
+-----+---------------------+-----------+

오름차순(ASC)으로 정렬

order by는 기본적으로 오름차순으로 정렬
아래와 같이 사용 가능

selectfrom 테이블 order byasc

내림차순(DESC)으로 정렬

내림차순으로 정렬하고 싶으면 desc를 열 이름 뒤에 붙여서 사용 가능

selectfrom 테이블 order bydesc

참고

order by로 행 순서를 변경해도 이는 실제 저장된 테이블에 영향을 주지 않음

복수의 열 정렬

selectfrom 테이블 where 조건식 order by1 asc,2 desc

위의 예시와 같이 열이름은 , 로 구분하고 desc인지 asc인지 명시해주면 복수의 열 정렬 가능

먼저 열1을 기준에 맞춰 정렬한 뒤 그 이후 정렬할 내용은 열2의 기준에 맞춰서 정렬하는 방식

아래의 예시를 참고

mysql> select * from users_frips;
+-----+---------+---------+
| id  | frip_id | user_id |
+-----+---------+---------+
|   1 |      26 |       1 |
|   2 |      37 |       1 |
|   3 |      63 |       1 |
|   4 |      73 |       1 |
|   5 |      82 |       1 |
|   6 |      94 |       1 |
|   7 |      96 |       1 |
|   8 |     104 |       1 |
|   9 |     108 |       1 |
|  10 |     115 |       1 |
|  11 |     138 |       1 |
|  12 |     146 |       1 |
|  13 |     147 |       1 |
|  14 |     154 |       1 |
		.
		.
    		.

| 325 |     185 |      15 |
| 326 |     192 |      15 |
| 327 |     209 |      15 |
| 328 |     215 |      15 |
| 329 |     226 |      15 |
| 330 |     233 |      15 |
| 331 |      15 |      16 |
| 333 |      19 |      16 |
+-----+---------+---------+

하나의 열로 정렬한 경우

mysql> select * from users_frips order by frip_id;
+-----+---------+---------+
| id  | frip_id | user_id |
+-----+---------+---------+
|  89 |       1 |       5 |
| 155 |       1 |       8 |
| 177 |       1 |       9 |
| 199 |       1 |      10 |
| 243 |       1 |      12 |
|  90 |       2 |       5 |
| 156 |       2 |       8 |
| 178 |       2 |       9 |
| 200 |       2 |      10 |
| 244 |       2 |      12 |
|  91 |       3 |       5 |
| 287 |       3 |      14 |
		.
		.
    		.

|  19 |     240 |       1 |
| 154 |     240 |       7 |
| 110 |     242 |       5 |
|  44 |     243 |       2 |
|  20 |     244 |       1 |
|  21 |     247 |       1 |
|  66 |     247 |       3 |
|  22 |     255 |       1 |
+-----+---------+---------+

두개의 열로 정렬한 경우

mysql> select * from users_frips order by frip_id, user_id desc;
+-----+---------+---------+
| id  | frip_id | user_id |
+-----+---------+---------+
| 243 |       1 |      12 |
| 199 |       1 |      10 |
| 177 |       1 |       9 |
| 155 |       1 |       8 |
|  89 |       1 |       5 |
| 244 |       2 |      12 |
| 200 |       2 |      10 |
| 178 |       2 |       9 |
| 156 |       2 |       8 |
|  90 |       2 |       5 |
| 287 |       3 |      14 |
|  91 |       3 |       5 |
		.
		.
    		.

|  19 |     240 |       1 |
| 110 |     242 |       5 |
|  44 |     243 |       2 |
|  20 |     244 |       1 |
|  66 |     247 |       3 |
|  21 |     247 |       1 |
|  22 |     255 |       1 |
+-----+---------+---------+

한개의 열을 이용하여 정렬한 경우 user_id가 오름차순으로 정렬되어 있었음
두개의 열 중 user_id를 내림차순으로 정렬하라고 지정해두었을 경우 위와 같이 변경됨

0개의 댓글