Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक राशि तक पहुंचने तक कैसे चयन करें

आपको अपनी अधिकतम इकाइयों को जोड़ते समय यह आदेश देने के लिए किसी तरह की आवश्यकता है कि कौन से रिकॉर्ड दूसरों पर प्राथमिकता प्राप्त करें। अन्यथा, आप कैसे जानते हैं कि आप 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 मान वाले रिकॉर्ड यहां और वहां 'दोहरी गणना' की तरह हो सकते हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql REGEXP में तार्किक और ऑपरेटर?

  2. JDBC प्रभावित पंक्तियों की गलत संख्या लौटाता है

  3. डोकर mysql कंटेनर से कनेक्ट नहीं हो सकता

  4. कैरेक्टर_सेट_कनेक्शन का उद्देश्य क्या है?

  5. PHP का उपयोग करके MySql तालिकाओं को कैसे आयात/पुनर्स्थापित करें?