Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

사용자 정의 필드 값이 있는 MySQL ORDER BY

<시간/>

사용자 정의 필드 값을 설정하려면 FIND_IN_SET()을 사용하십시오. 먼저 테이블을 생성하겠습니다 -

mysql> create table DemoTable677(
   UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   UserStatus text
);
Query OK, 0 rows affected (1.07 sec)

삽입 명령을 사용하여 테이블에 일부 레코드 삽입 -

mysql> insert into DemoTable677(UserStatus) values('BUSY');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable677(UserStatus) values('AT WORK');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable677(UserStatus) values('OFFLINE');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable677(UserStatus) values('BLOCKED');
Query OK, 1 row affected (0.17 sec)

select 문을 사용하여 테이블의 모든 레코드 표시 -

mysql> select *from DemoTable677;

이것은 다음과 같은 출력을 생성합니다 -

+--------+------------+
| UserId | UserStatus |
+--------+------------+
|      1 | BUSY       |
|      2 | AT WORK    |
|      3 | OFFLINE    |
|      4 | BLOCKED    |
+--------+------------+
4 rows in set (0.00 sec)

다음은 사용자 정의 필드 값을 사용하여 ORDER BY에 대한 쿼리입니다 -

mysql> select *from DemoTable677 ORDER BY FIND_IN_SET(UserStatus, 'BLOCKED,AT WORK,OFFLINE,BUSY');

이것은 다음과 같은 출력을 생성합니다 -

+--------+------------+
| UserId | UserStatus |
+--------+------------+
|      4 | BLOCKED    |
|      2 | AT WORK    |
|      3 | OFFLINE    |
|      1 | BUSY       |
+--------+------------+
4 rows in set (0.03 sec)