우선 순위 기능 넣어주세요~ 낮을수록 위에 오고, 없는 데이터는 그 아래에 뿌려주세요~
위 요구 사항을 해결하기 위해서 priority 컬럼을 만들어주었다.
-- Null을 허용함
ALTER TABLE board ADD priority INT
그 후, 그냥 ASC 정렬을 하면 우선순위가 낮은대로 출력될 줄 알았다.
SELECT * FROM board ORDER BY priority ASC
하지만 출력결과는 아래와 같았다..
DATA | PRIORITY |
{~~~~~} | |
{~~~~~} | |
{~~~~~} | 1 |
{~~~~~} | 3 |
ASC 정렬 시 null이 우선되기 때문이었다.
문제 해결
- TRUE는 1이고 FALSE는 0이다. 누가 더 큰가? TRUE가 더 크다.
- 우선순위가 있는 녀석들과 없는 녀석들의 차이는 우선순위의 NULL 여부이다.
- 정렬은 여러 컬럼(혹은 식)을 기준으로 할 수 있다.
위 사항들을 보았을 때, 해결 방법이 떠올랐다.
SELECT * FROM board
ORDER BY
priority IS NULL, priority ASC, updated_at DESC
-- updatedAt은 그냥 추가해보았다
위 쿼리문대로 조회하니 아래와 같은 결과가 나왔다. 성공~!
DATA | PRIORITY | UPDATED_AT |
{~~~~~} | 1 | 2002-10-11 |
{~~~~~} | 3 | 2022-10-11 |
{~~~~~} | 3 | 2021-09-16 |
{~~~~~} | 2003-11-11 | |
{~~~~~} | 2000-08-13 |
+ 아래 쿼리는 오라클의 경우다.
SELECT * FROM board
ORDER BY
priority NULLS LAST
-- 반대의 경우는 NULLS FIRST이다
반응형
'경험' 카테고리의 다른 글
[React / Github Pages] BrowserRouter basename 오류 (0) | 2023.06.02 |
---|---|
[JavaScript 정규식] 태그, 태그 안 내용까지 지우기 (0) | 2023.04.27 |
서버 이관 - 서버 이관 처음할 때 필요했던 것들 (0) | 2023.02.17 |
Express 라우팅 - 라우트 파라미터 정규식 (0) | 2022.12.19 |
[Spring][MySql] Unknown system variable 'query_cache_size’ (0) | 2022.10.25 |