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

Làm thế nào để sắp xếp dữ liệu theo thứ tự cụ thể trong MySQL?

Sử dụng ORDER BY IF () để sắp xếp dữ liệu theo một thứ tự cụ thể. Sau đây là cú pháp -

select *from yourTableName ORDER BY IF(yourColumnName=yourValue1 OR
yourColumnName=yourValue2 OR yourColumnName=yourValue3,yourColumnName,
~yourColumnName) ASC;

Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table arrangeDataInSpecificOrder
   -> (
   -> StudentId int,
   -> StudentName varchar(20)
   -> );
Query OK, 0 rows affected (0.64 sec)

Sau đây là truy vấn để chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert -

mysql> insert into arrangeDataInSpecificOrder values(10,'Larry');
Query OK, 1 row affected (0.12 sec)
mysql> insert into arrangeDataInSpecificOrder values(15,'Mike');
Query OK, 1 row affected (0.09 sec)
mysql> insert into arrangeDataInSpecificOrder values(100,'Sam');
Query OK, 1 row affected (0.16 sec)
mysql> insert into arrangeDataInSpecificOrder values(70,'Carol');
Query OK, 1 row affected (0.12 sec)
mysql> insert into arrangeDataInSpecificOrder values(90,'Bob');
Query OK, 1 row affected (0.14 sec)
mysql> insert into arrangeDataInSpecificOrder values(300,'David');
Query OK, 1 row affected (0.12 sec)

Sau đây là truy vấn để 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 -

mysql> select * from arrangeDataInSpecificOrder;

Điều này sẽ tạo ra kết quả sau -

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 10        | Larry       |
| 15        | Mike        |
| 100       | Sam         |
| 70        | Carol       |
| 90        | Bob         |
| 300       | David       |
+-----------+-------------+
6 rows in set (0.00 sec)

Đây là truy vấn để sắp xếp dữ liệu theo thứ tự cụ thể -

mysql> select * from arrangeDataInSpecificOrder ORDER BY IF(StudentId=300 OR
StudentId=100 OR StudentId=10,StudentId, ~StudentId) ASC;

Điều này sẽ tạo ra kết quả sau -

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 10        | Larry       |
| 100       | Sam         |
| 300       | David       | 
| 90        | Bob         |
| 70        | Carol       |
| 15        | Mike        |
+-----------+-------------+
6 rows in set (0.00 sec)