Mssql null order by 방법

MS SQL에서는 쿼리에서 반환되는 데이터를 정렬(순서지정) 하기 위해서 ORDER BY 절을 사용하면 됩니다. 인덱스가 없다면 기본적으로 데이터는 입력된 순서대로 출력이 됩니다. 저 같은 경우는 모든 사용자 화면에 기본적으로 ORDER BY 절을 추가 합니다.

그럼 간단한 예제를 통해서 ORDER BY 절에 대해서 알아보죠.

포스트 기준

- Microsoft SQL Server 2019

- SSMS 18.10

구문 (syntaxsql)

[ ORDER BY { order_by_expression [ ASC | DESC ]} [ ,...n ] ] 

1) order_by_expression : 쿼리 결과 집합을 정렬할 열 또는 식을 지정

2) ASC, DESC : 오름차순으로 정렬되는지 내림차순으로 정렬되는지를 지정합니다. ASC는 오름차순, DESC는 내림차순으로 정렬합니다. ASC가 기본 정렬 순서로 생략해도 됩니다.

1. 테스트 데이터

-- 총 10건 SELECT * FROM BS_DEMO_7

2. 오름차순 ASC 예제 1)

▶ 1번, 2번, 3번 쿼리 결과 동일함

-- 1) 과목으로 오름차순(ASC) 정렬 SELECT * FROM BS_DEMO_7 ORDER BY SUBJECT ASC -- 2) 과목으로 오름차순(ASC) 정렬 : ASC 생략가능 SELECT * FROM BS_DEMO_7 ORDER BY SUBJECT -- 3) 과목으로 오름차순(ASC) 정렬 : 위치를 나타내는 정수로 정렬 가능 SELECT * FROM BS_DEMO_7 ORDER BY 3

3. 내림차순 DESC 예제 2)

▶ 1번, 2번 쿼리 결과 동일함

-- 1) 과목으로 내림차순(DESC) 정렬 SELECT * FROM BS_DEMO_7 ORDER BY SUBJECT DESC -- 2) 과목으로 내림차순(DESC) 정렬 : 위치를 나타내는 정수로 정렬 가능 SELECT * FROM BS_DEMO_7 ORDER BY 3 DESC

4. 여러 열 항목 정렬 예제 3)

-- 이름 순으로 먼저 오름차순(ASC)으로 정렬하고 난뒤 -- 다음에 과목 순으로 내림차순(DESC)으로 정렬 SELECT * FROM BS_DEMO_7 ORDER BY NAME, 3 DESC

이상입니다.

'구독''좋아요'는 다음 글 작성에 큰 힘이 됩니다.

MySQL에서 ORDER BY로 정렬시 null값 처리

ORDER BY 구문을 통해 데이터를 정렬하는데, 문자열은 사전순으로, 숫자의 경우 그 수의 크기 순으로 정렬합니다. 그러나 NULL값의 경우는 값이 없다는 의미를 가지고 있기에 대소를 가릴 수 없는데, 그래서인지 NULL값 정렬에 대한 정해진 표준이 없기 때문에 Oracle이나 MySQL, MS-SQL, PostgreSQL 등 각 DBMS의 공급사마다 다른 방식으로 NULL값 정렬에 대한 처리를 하고 있습니다.

결론적으로 MySQL의 경우 NULL값은 가장 작은 값으로 취급하고 있습니다.

simple_tbl 테이블은 단순히 number라는 INTEGER형 컬럼 하나만을 가지고 있는 테이블입니다.

SELECT * FROM simple_tbl;

cs

네 개의 정수값과 NULL값을 하나 가지고 있습니다.

이 상태에서 number컬럼을 오름차순으로 정렬한 경우 NULL값이 있는 행이 가장 첫 행인것을 볼 수 있습니다.

SELECT * FROM simple_tbl ORDER BY number ASC;

cs

반대로 내림차순인 경우에는 NULL값이 있는 행이 가장 마지막 행으로 정렬됩니다.

SELECT * FROM simple_tbl ORDER BY number DESC;

cs

Toplist

최신 우편물

태그