Lý tưởng nhất là tôi muốn làm điều này:Làm thế nào để cập nhật và trật tự bằng cách sử dụng MS SQL
UPDATE TOP (10) messages SET status=10 WHERE status=0 ORDER BY priority DESC;
Trong tiếng Anh: Tôi muốn để có được top 10 có sẵn (status = 0) các tin nhắn từ DB và nhốt chúng (trạng thái = 10). Một thông báo có mức độ ưu tiên cao hơn nên được nhận trước tiên.
tiếc là MS SQL không cho phép đơn hàng theo mệnh đề trong bản cập nhật.
Làm cách nào để vượt qua điều này?
vì tôi muốn có chỉ mục cho giải pháp này. Sau đó tôi sẽ sử dụng: (ưu tiên desc, trạng thái) hoặc (trạng thái, mức ưu tiên desc)? Nói cách khác: là thứ tự được sử dụng trước khi ở đâu? – Toad
Trên thực tế, truy vấn không chính xác .... thứ tự theo mệnh đề không thể được sử dụng trong truy vấn con KHÔNG GIỚI HẠN một TOP cũng được đưa ra. (Đây là những gì công cụ SQL nói). Vì vậy, các truy vấn chính xác nên: UPDATE tin nhắn SET status = 10 WHERE ID trong (SELECT TOP (10) Id TỪ bảng WHERE status = 0 ORDER BY ưu tiên DESC); – Toad
Bạn nói đúng, tôi đã bỏ lỡ đầu khi tôi viết bản chỉnh sửa cuối cùng. Tôi sẽ chỉnh sửa nó như bạn đã nói –