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

MySQL에서 마지막 3자를 기준으로 주문하시겠습니까?

<시간/>

ORDER BY RIGHT() 함수를 사용하여 MySQL에서 마지막 3자를 기준으로 정렬할 수 있습니다. 구문은 다음과 같습니다 -

SELECT *FROM yourTableName
ORDER BY RIGHT(yourColumnName,3) yourSortingOrder;

'yourSortingOrder'를 ASC 또는 DESC로 바꾸면 각각 오름차순 또는 내림차순으로 설정됩니다.

위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -

mysql> create table OrderByLast3Chars
   -> (
   -> EmployeeId int NOT NULL AUTO_INCREMENT,
   -> EmployeeName varchar(20),
   -> EmployeeAge int,
   -> PRIMARY KEY(EmployeeId)
   -> );
Query OK, 0 rows affected (0.56 sec)

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

mysql> insert into OrderByLast3Chars(EmployeeName,EmployeeAge) values('Carol_901',24);
Query OK, 1 row affected (0.14 sec)

mysql> insert into OrderByLast3Chars(EmployeeName,EmployeeAge) values('Bob_101',21);
Query OK, 1 row affected (0.19 sec)

mysql> insert into OrderByLast3Chars(EmployeeName,EmployeeAge) values('Sam_107',22);
Query OK, 1 row affected (0.20 sec)

mysql> insert into OrderByLast3Chars(EmployeeName,EmployeeAge) values('Mile_677',26);
Query OK, 1 row affected (0.19 sec)

mysql> insert into OrderByLast3Chars(EmployeeName,EmployeeAge) values('John_978',27);
Query OK, 1 row affected (0.75 sec)

mysql> insert into OrderByLast3Chars(EmployeeName,EmployeeAge) values('David_876',29);
Query OK, 1 row affected (0.28 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> select *from OrderByLast3Chars;

다음은 출력입니다 -

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| 1          | Carol_901    | 24          |
| 2          | Bob_101      | 21          |
| 3          | Sam_107      | 22          |
| 4          | Mile_677     | 26          |
| 5          | John_978     | 27          |
| 6          | David_876    | 29          |
+------------+--------------+-------------+
6 rows in set (0.00 sec)

다음은 마지막 3자를 기준으로 정렬하는 쿼리입니다.

사례 1 − 결과를 오름차순으로 가져옵니다.

쿼리는 다음과 같습니다 -

mysql> select *from OrderByLast3Chars
   -> order by RIGHT(EmployeeName,3) asc;

다음은 출력입니다 -

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| 1          | Carol_901    | 24          |
| 2          | Bob_101      | 21          |
| 3          | Sam_107      | 22          |
| 4          | Mile_677     | 26          |
| 5          | John_978     | 27          |
| 6          | David_876    | 29          |
+------------+--------------+-------------+
6 rows in set (0.00 sec)

사례 2 − 결과를 내림차순으로 가져옵니다. 쿼리는 다음과 같습니다 -

mysql> select *from OrderByLast3Chars
   -> order by RIGHT(EmployeeName,3) desc;

다음은 출력입니다 -

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
|          5 | John_978     |          27 |
|          1 | Carol_901    |          24 |
|          6 | David_876    |          29 |
|          4 | Mile_677     |          26 |
|          3 | Sam_107      |          22 |
|          2 | Bob_101      |          21 |
+------------+--------------+-------------+
6 rows in set (0.00 sec)