Computer >> Máy Tính >  >> Lập trình >> MySQL

Thứ tự theo 3 ký tự cuối cùng trong MySQL?

Bạn có thể sử dụng hàm ORDER BY RIGHT () để sắp xếp theo 3 ký tự cuối cùng trong MySQL. Cú pháp như sau -

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

Chỉ cần thay thế ‘yourSortingOrder’ thành ASC hoặc DESC để đặt thứ tự tăng dần hoặc giảm dần tương ứng.

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

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)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

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)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from OrderByLast3Chars;

Sau đây là kết quả -

+------------+--------------+-------------+
| 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)

Đây là truy vấn để sắp xếp theo 3 ký tự cuối cùng.

Trường hợp 1 - Nhận kết quả theo thứ tự tăng dần.

Truy vấn như sau -

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

Sau đây là kết quả -

+------------+--------------+-------------+
| 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)

Trường hợp 2 - Nhận kết quả theo thứ tự giảm dần. Truy vấn như sau -

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

Sau đây là kết quả -

+------------+--------------+-------------+
| 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)