Bạn cần một số cách để sắp xếp những bản ghi nào được ưu tiên hơn những bản ghi khác khi cộng đến các đơn vị tối đa của bạn. Nếu không, làm sao bạn biết bạn giữ bộ hồ sơ nào có tổng số lên đến 600?
SELECT d.id, d.size, d.date_created
FROM documents d
INNER JOIN documents d2 ON d2.tag_id=d.tag_id AND d2.date_created >= d.date_created
WHERE d.tag_id=26
GROUP BY d.id, d.size, d.date_created
HAVING sum(d2.size) <= 600
ORDER BY d.date_created DESC
Đây chỉ là một truy vấn cơ bản để giúp bạn bắt đầu và vẫn còn một số vấn đề cần giải quyết:
- Nó dừng lại ở <=600, vì vậy trong hầu hết các trường hợp, bạn sẽ không điền chính xác vào giới hạn kích thước của mình. Điều này có nghĩa là bạn có thể muốn tinh chỉnh nó để cho phép một bản ghi nữa. Ví dụ:nếu bản ghi đầu tiên> 600, truy vấn sẽ không trả lại gì và đó có thể là một vấn đề.
- Việc kiểm tra các bản ghi nhỏ hơn bổ sung sau này có thể vẫn vừa với giới hạn sẽ không làm được gì.
- Các bản ghi có các giá trị được tạo ngày tháng giống hệt nhau có thể được 'đếm gấp đôi' ở đây và ở đó.