Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 조건을 활용해 쿼리를 정렬하고 선택하는 방법

MySQL에서 조건을 활용한 정렬과 선택 방법

MySQL에서 0 값을 맨 뒤로 보내고 나머지 값들을 오름차순으로 정렬하려면 ORDER BY 절에 조건식을 함께 사용할 수 있습니다. 다음은 기본 문법입니다.

select * from yourTableName order by yourColumnName=0,yourColumnName;

이 문법의 핵심은 yourColumnName=0이라는 불리언 표현식입니다. MySQL에서는 조건식이 거짓이면 0, 참이면 1을 반환합니다. 따라서 0이 아닌 값은 0(거짓)으로 평가되어 앞쪽에 정렬되고, 실제 0인 값은 1(참)로 평가되어 뒤로 밀려나게 됩니다.

테이블 생성하기

먼저 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1348
-> (
-> Amount int
-> );
Query OK, 0 rows affected (0.80 sec)

데이터 삽입하기

insert 명령을 사용하여 테이블에 여러 개의 레코드를 삽입합니다.

mysql> insert into DemoTable1348 values(100);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1348 values(0);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1348 values(90);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1348 values(45);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1348 values(0);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1348 values(89);
Query OK, 1 row affected (0.12 sec)

전체 레코드 조회하기

select 문을 사용하여 테이블의 모든 레코드를 확인합니다.

mysql> select * from DemoTable1348;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------+
| Amount |
+--------+
|    100 |
|      0 |
|     90 |
|     45 |
|      0 |
|     89 |
+--------+
6 rows in set (0.00 sec)

조건을 적용한 정렬 쿼리 실행하기

다음은 조건을 사용하여 정렬과 선택을 동시에 수행하는 쿼리입니다.

mysql> select * from DemoTable1348 order by Amount=0,Amount;

실행 결과는 다음과 같습니다.

+--------+
| Amount |
+--------+
|     45 |
|     89 |
|     90 |
|    100 |
|      0 |
|      0 |
+--------+
6 rows in set (0.00 sec)

결과를 살펴보면 0이 아닌 값들(45, 89, 90, 100)이 오름차순으로 먼저 정렬되고, 0 값들은 맨 뒤로 이동한 것을 확인할 수 있습니다. 이 방식은 유효한 데이터를 우선적으로 표시하고 0이나 의미 없는 값을 결과 하단으로 내보내고 싶을 때 매우 유용하게 활용됩니다.