-
[mysql] 특정문자를 상위로 정렬하기(order by 특정값 정렬)DB/MySql 2021. 2. 11. 23:04
1. ORDER BY FIELD() 를 사용하여 '자전거'가 첫번째, '비행기'가 두번째, 그외 나머지는 오름차순으로 정렬하기
SELECT product_name FROM COIN ORDER BY FIELD(product_name, '자전거', '비행기') DESC, product_name ASC
- FIELD 함수의 첫번째 파라미터에 정렬할 컬럼을 넣고, 그 이후 파라미터엔 우선적으로 정렬할 값들을 역순으로 넣어준다.
그리고 FIELD 함수를 DESC정렬 시켜주면 된다.
- 원리는 FIELD 함수를 사용하면 첫번째 파라미터의 값과 같은 값이 그 이후 파라미터의 몇번째에 있는지 index값을 반환한다.
즉 이후 파라미터의 첫번째에 있는 '자전거'는 1이 반환되고, 두번째에 있는 '비행기'는 2가 반환이 된다.
같은 값이 없는 나머지는 0이 반환된다.
이것을 DESC정렬하여 우선적으로 정렬되게 한다.
2. order by 에 case 문을 사용
SELECT * FROM table A ORDER BY CASE WHEN A.product_name = '자전거' THEN 1 ELSE 2 END
똑같은 원리다. 상위에 정렬 시키고 싶은 내용들을 case 문의 상수값을 작은 숫자로 반환시켜주면 된다.
반응형'DB > MySql' 카테고리의 다른 글
[mysql] like 를 여러개 검색 (0) 2021.02.12 [MySql] rownum 생성 방법 (0) 2020.11.11 [MySql] 컬럼리스트 및 테이블 정보 조회 쿼리 (0) 2020.10.09 Mysql 실행계획(explain) 보는법 (1) 2020.05.11 MySql 옵티마이져 실행 개요 (0) 2020.05.11