Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Kết hợp ORDER BY FIELD với GROUP BY trong một truy vấn MySQL

Sử dụng FIELD() trong ORDER BY để sắp xếp theo thứ tự tùy chỉnh sau khi gom nhóm với GROUP BY.

Tạo bảng và dữ liệu

mysql> CREATE TABLE DemoTable(Message TEXT); 
Query OK, 0 rows affected (1.15 sec)

mysql> INSERT INTO DemoTable VALUES 
('Good'), ('Bye'), ('Awesome'), ('Bye'), ('Good'), ('Amazing'), ('Awesome'), ('Bye'); 
Query OK, 8 rows affected

Gom nhóm và sắp xếp thứ tự tùy chỉnh

mysql> SELECT * FROM DemoTable 
GROUP BY Message 
ORDER BY FIELD(Message, 'Amazing', 'Awesome', 'Good', 'Bye');

Kết quả:

+---------+
| Message |
+---------+
| Amazing |
| Awesome |
| Good    |
| Bye     |
+---------+

Giải thích:

  • GROUP BY Message gom 8 hàng thành 4 giá trị duy nhất
  • FIELD(str, val1, val2, ...) trả về vị trí (1-based) của str trong danh sách, 0 nếu không tìm thấy
  • Sắp xếp theo giá trị FIELD tăng dần → Amazing(1), Awesome(2), Good(3), Bye(4)

Ứng dụng: Sắp xếp trạng thái: 'Pending', 'Processing', 'Completed', 'Cancelled' hoặc mức độ ưu tiên: 'High', 'Medium', 'Low'.