책 내용 질문하기
order by ~
도서
2027 한 권으로 끝내는 시나공 SQLD + 시험장에 들고 가는 킬러 문항 32제
페이지
155,156
조회수
148
작성일
2026-08-09
작성자
진*
첨부파일

p.155, 156에서

order by dept_id || emp_nm desc;


두 컬럼을 한꺼번에 내림차순하고 싶으면 || (or) 연산자를 사용한다고 나오는데요.

오름차순 / 내림차순을 할 때, 두 컬럼을 동시 적용하는 건 의미가 없을 듯 합니다.

결국 한 컬럼 기준으로 오름/내림차순이 되기 때문에 156페이지에서도

dept_id 기준으로 내림차순이 된 것으로 보입니다.


정렬 시 null은 dbms 마다 차이가 있는데요.

책에서는 oracle 기준으로 내림차순 시 null이 맨 위에 나온 것 같습니다.



답변
2026-08-10 13:24:49

안녕하세요.
좋은 질문 감사합니다. 세 가지로 나누어 답변드리겠습니다.


먼저 ||는 OR 연산자가 아니라 두 문자열을 이어 붙이는 연결 연산자입니다(CONCAT과 동일).
따라서 dept_id || emp_nm은 두 컬럼을 하나의 문자열로 합치고,
ORDER BY는 그 합쳐진 단일 문자열을 기준으로 정렬합니다.


이 점을 이해하시면 '두 컬럼 동시 정렬은 의미가 없지 않나'라는 의문도 풀립니다.
말씀하신 대로 정렬 기준을 개별 컬럼으로 나누어 쓰는 것(ORDER BY dept_id DESC, emp_nm DESC)이 정석입니다.
다만 || 방식은 두 컬럼을 하나로 묶어 한꺼번에 정렬하고 싶을 때 쓰는 방법으로,
다른 교재에는 잘 없지만 실무에서 여러 컬럼을 묶어 정렬할 때 유용하게 쓰입니다.


NULL 처리도 정확히 보셨습니다. NULL의 정렬 위치는 DBMS마다 다르며, 책은 오라클 기준입니다.
오라클은 내림차순 시 NULL을 맨 위에 표시하므로 156페이지에서도 NULL이 상단에 나온 것입니다.


질문 감사합니다.

  • 서*재
    2026-08-10 13:24:49

    안녕하세요.
    좋은 질문 감사합니다. 세 가지로 나누어 답변드리겠습니다.


    먼저 ||는 OR 연산자가 아니라 두 문자열을 이어 붙이는 연결 연산자입니다(CONCAT과 동일).
    따라서 dept_id || emp_nm은 두 컬럼을 하나의 문자열로 합치고,
    ORDER BY는 그 합쳐진 단일 문자열을 기준으로 정렬합니다.


    이 점을 이해하시면 '두 컬럼 동시 정렬은 의미가 없지 않나'라는 의문도 풀립니다.
    말씀하신 대로 정렬 기준을 개별 컬럼으로 나누어 쓰는 것(ORDER BY dept_id DESC, emp_nm DESC)이 정석입니다.
    다만 || 방식은 두 컬럼을 하나로 묶어 한꺼번에 정렬하고 싶을 때 쓰는 방법으로,
    다른 교재에는 잘 없지만 실무에서 여러 컬럼을 묶어 정렬할 때 유용하게 쓰입니다.


    NULL 처리도 정확히 보셨습니다. NULL의 정렬 위치는 DBMS마다 다르며, 책은 오라클 기준입니다.
    오라클은 내림차순 시 NULL을 맨 위에 표시하므로 156페이지에서도 NULL이 상단에 나온 것입니다.


    질문 감사합니다.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.