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

ĐẶT HÀNG THEO bảng chữ cái đầu tiên sau đó theo số trong MySQL?

Bạn cần sử dụng biểu thức chính quy với mệnh đề ORDER BY. Cú pháp như sau:

 CHỌN * TỪ yourTableNameORDER BẰNG IF (yourColumnName RLIKE '^ [a-z]', 1, 2), yourColumnName; 

Để 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> tạo bảng AlphabetFirstThenNumberDemo -> (-> Id int NOT NULL AUTO_INCREMENT, -> Name varchar (20), -> PRIMARY KEY (Id) ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,95 giây)  

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

 mysql> chèn vào các giá trị AlphabetFirstThenNumberDemo (Tên) ('John'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,37 giây) mysql> chèn vào các giá trị AlphabetFirstThenNumberDemo (Tên) ('Bob'); Truy vấn OK, 1 hàng bị ảnh hưởng ( 0,21 giây) mysql> chèn vào các giá trị AlphabetFirstThenNumberDemo (Tên) ('1Sam'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,17 giây) mysql> chèn vào các giá trị AlphabetFirstThenNumberDemo (Tên) ('Carol'); Truy vấn OK, 1 hàng bị ảnh hưởng ( 0,22 giây) mysql> chèn vào các giá trị AlphabetFirstThenNumberDemo (Tên) ('2Larry'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,31 giây) mysql> chèn vào các giá trị AlphabetFirstThenNumberDemo (Tên) ('David'); Truy vấn OK, 1 hàng bị ảnh hưởng ( 0,27 giây) mysql> chèn vào các giá trị AlphabetFirstThenNumberDemo (Tên) ('3Mike'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,14 giây) mysql> chèn vào các giá trị AlphabetFirstThenNumberDemo (Tên) ('Robert'); Truy vấn OK, 1 hàng bị ảnh hưởng ( 0,10 giây) 

Bây giờ bạn có thể 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 * từ AlphabetFirstThenNumberDemo; 

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

 + ---- + -------- + | Id | Tên | + ---- + -------- + | 1 | John || 2 | Bob || 3 | 1Sam || 4 | Carol || 5 | 2Larry || 6 | David || 7 | 3Mike || 8 | Robert | + ---- + -------- + 8 hàng được thiết lập (0,00 giây) 

Đây là thứ tự truy vấn theo bảng chữ cái đầu tiên sau đó là một số. Truy vấn như sau:

 mysql> select * from AlphabetFirstThenNumberDemo -> ORDER BY IF (Name RLIKE '^ [a-z]', 1, 2), Name; 

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

 + ---- + -------- + | Id | Tên | + ---- + -------- + | 2 | Bob || 4 | Carol || 6 | David || 1 | John || 8 | Robert || 3 | 1Sam || 5 | 2Larry || 7 | 3Mike | + ---- + -------- + 8 hàng trong bộ (0,00 giây)