Đăng bởi:
SudoĐăng ngày:
Mar 20, 2018Đăng ở:
Tin Tức Công NghệTrong MySQL chúng ta có thể sắp xếp các kết quả theo thứ tự tăng dần hoặc giảm dần một cách rất dễ dàng bằng cách sử dụng mệnh đề ORDER BY. Tuy nhiên, có những lúc bạn muốn sắp xếp các kết quả theo thứ tự cụ thể mà không thể thực hiện bằng cách sử dụng ASC hoặc DESC. Hàm FIELD() của mệnh đề MySQL ORDER BY có thể được sử dụng để sắp xếp các kết quả theo thứ tự cụ thể.
Trong bài viết này sẽ sử dụng một bảng cơ sở dữ liệu mẫu để mô tả, bảng này sẽ chứa thông tin tên của các loài vật và chủng loại của chúng. Tôi muốn lấy chúng theo thứ tự dog, cat, snake và bird, tôi sẽ không thể sử dụng MySQL ORDER BY để lấy các kết quả theo thứ tự này. Bằng cách sử dụng hàm FIELD() của mệnh đề MySQL ORDER BY tôi có thể nhận được kết quả theo thứ tự tôi cần. Đây là truy vấn tôi có thể sử dụng:
SELECT name, species FROM `pet`
ORDER BY FIELD(species, 'dog','cat','snake','bird'), name ASC
Truy vấn này sẽ trả lại cho tôi những kết quả được sắp đặt bởi các loài theo thứ tự tôi cần và sau đó sắp xếp nó theo tên. Đây là kết quả:
name | species |
---|---|
Bowser | dog |
Buffy | dog |
Fang | dog |
Claws | cat |
Fluffy | cat |
Slim | snake |
Chirpy | bird |
Whistler | bird |
Giải pháp trên hoạt động tốt với các giá trị được liệt kê trong hàm FIELD(). Trong trường hợp tiếp theo chúng ta hãy thử với mục đích đặc biệt hơn, chúng ta sẽ sắp xếp kết quả theo dog và cat lên trước, các loại khác sẽ ở phía sau theo mặc định:
SELECT name, species FROM `pet`
ORDER BY FIELD(species, 'cat','dog') DESC , name ASC
Truy vấn này sẽ cho chúng ta những kết quả sau:
name | species |
---|---|
Bowser | dog |
Buffy | dog |
Fang | dog |
Claws | cat |
Fluffy | cat |
Chirpy | bird |
Slim | snake |
Whistler | bird |
Lưu ý rằng các kết quả được sắp xếp theo dog và cat lên trước, nhưng không phải các kỳ loài khác. Nếu chúng ta cần có các kết quả khác cũng sắp xếp theo loài chúng ta có thể sử dụng truy vấn sau:
SELECT name, species FROM `pet`
ORDER BY FIELD(species, 'cat','dog') DESC, species ASC, name ASC
Bây giờ truy vấn này trả lại cho chúng ta các kết quả sau:
name | species |
---|---|
Bowser | dog |
Buffy | dog |
Fang | dog |
Claws | cat |
Fluffy | cat |
Chirpy | bird |
Whistler | bird |
Slim | snake |
Tất cả các truy vấn trên không có trong tài liệu cụ thể của MySQL tuy nhiên tôi đã thử và chúng hoạt động tốt trên MySQL 5.6. Nếu có góp ý gì cho bài viết bạn hãy để lại dưới phần bình luận nhé.
Bình luận
Để lại bình luận
Email và số điện thoại sẽ không được công khai. Những trường bắt buộc được đánh dấu *