Nó có thể có thể thực hiện trong một truy vấn chọn lọc (có thể sử dụng một cái gì đó như case when
mặc dù tôi không chắc điều đó được phép trong order by
bản thân mệnh đề, YMMV tùy thuộc vào DBMS) nhưng hiếm khi là ý kiến hay nếu bạn muốn cơ sở dữ liệu của mình mở rộng quy mô cũng như các bảng lớn hơn ("không có hiệu suất của lợn một chân trong cuộc đua ngựa" , như một trong những DBA của chúng tôi đã hùng hồn tuyên bố điều đó).
Trong những tình huống như thế này, tôi thiết lập một cột bổ sung (được lập chỉ mục) để giữ giá trị tối đa và đảm bảo rằng tính toàn vẹn của dữ liệu được duy trì bằng cách sử dụng trình kích hoạt chèn / cập nhật để buộc cột mới đó ở mức tối đa trong ba cột còn lại.
Bởi vì hầu hết các bảng cơ sở dữ liệu được đọc thường xuyên hơn nhiều so với được viết, điều này làm tăng chi phí tính toán trên tất cả các lần đọc. Chi phí chỉ phải chịu khi dữ liệu được cập nhật và các truy vấn trở nên nhanh chóng mặt vì bạn đang đặt hàng trên một cột, được lập chỉ mục, duy nhất:
select f1, f2, f3 from t order by fmax desc;