आपको अपनी अधिकतम इकाइयों को जोड़ते समय यह आदेश देने के लिए किसी तरह की आवश्यकता है कि कौन से रिकॉर्ड दूसरों पर प्राथमिकता प्राप्त करें। अन्यथा, आप कैसे जानते हैं कि आप 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
आपको आरंभ करने के लिए यह केवल एक बुनियादी प्रश्न है, और अभी भी कई समस्याओं का समाधान करना बाकी है:
- यह <=600 पर रुकता है, इसलिए ज्यादातर मामलों में आप अपनी आकार सीमा को ठीक से नहीं भरेंगे। इसका मतलब है कि आप एक और रिकॉर्ड की अनुमति देने के लिए इसे बदलना चाह सकते हैं। उदाहरण के लिए, यदि पहला रिकॉर्ड> 600 है, तो क्वेरी कुछ भी नहीं लौटाएगी, और यह एक समस्या हो सकती है।
- यह बाद में अतिरिक्त छोटे रिकॉर्ड की जांच करने के लिए कुछ नहीं करेगा जो कि अभी भी सीमा के अंतर्गत फिट हो सकते हैं।
- समान date_created मान वाले रिकॉर्ड यहां और वहां 'दोहरी गणना' की तरह हो सकते हैं।