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 Messagegom 8 hàng thành 4 giá trị duy nhấtFIELD(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'.