यदि SELECT SUM(amount) FROM transactions ORDER BY order LIMIT 0, 50
तालिका में पहले 50 रिकॉर्ड के लिए amount
फ़ील्ड का योग करता है, तो के बाद सभी रिकॉर्ड पहले 50 के बाद कैसे रिकॉर्ड करते हैं? दूसरे शब्दों में, मैं SELECT SUM(amount) from transactions ORDER BY order LIMIT 50, *
जैसे कुछ करना चाहता हूं, लेकिन यह काम नहीं करता है।तालिका के अंत तक ऑफसेट से SUM() कैसे करें?
उत्तर
documentation सलाह LIMIT
से पीछे नहीं पैरामीटर के रूप में एक अविश्वसनीय बड़ी संख्या में उपयोग करने के लिए:
एक निश्चित से सभी पंक्तियों को पुनः प्राप्त करने के परिणाम सेट के अंत तक ऑफसेट, आप के लिए कुछ बड़ी संख्या में उपयोग कर सकते हैं दूसरा पैरामीटर यह बयान पिछले करने के लिए 96 वां पंक्ति से सभी पंक्तियों को पुन: प्राप्त:
SELECT * FROM tbl LIMIT 95,18446744073709551615;
SELECT SUM(amount)
FROM (
SELECT amount
FROM transactions
ORDER BY
order
LIMIT 50, 1000000000000
) q
ध्यान दें कि आपकी मूल क्वेरी:
SELECT SUM(amount)
FROM transactions
ORDER BY
order
LIMIT 0, 50
क्या आप शायद लगता है कि यह करता है नहीं करता है। यह इस के लिए पर्याय बन गया है:
SELECT a_sum, order
FROM (
SELECT SUM(amount) AS a_sum, order
FROM transactions
) q
ORDER BY
order
LIMIT 0, 50
भीतरी क्वेरी (जो आम तौर किसी अन्य इंजन में विफल हो जाएगा लेकिन इसकी GROUP BY
विस्तार वाक्य रचना के कारण MySQL
में काम करता है) केवल 1
रिकॉर्ड देता है।
ORDER BY
और LIMIT
तब उस समेकित रिकॉर्ड पर लागू होते हैं, transactions
के रिकॉर्ड के लिए नहीं।
यदि आपके पास 1000000000000 से अधिक पंक्तियां हैं तो क्या होगा? – Pyrolistical
उप-प्रश्न के लिए कोई कारण? अनावश्यक लगता है। – keithjgrant
@ पेरोलॉजिकल: फिर आप किसी अन्य इंजन पर स्विच करने पर विचार करते हैं। – Quassnoi
शायद एक अधिक कुशल तरीका नहीं है, लेकिन आप अपने तालिका में पंक्तियों की कुल # पुनः प्राप्त करने के पहले एक गिनती क्वेरी चला सकते हैं,:
SELECT count(*) FROM transactions
सामग्री को एक चर में रखें और उस सीमा का उपयोग LIMIT के लिए आपके दूसरे तर्क के रूप में करें। आप शायद इसे नेस्टेड mysql क्वेरी के रूप में कर सकते हैं।
- 1. किसी अन्य तालिका से SUM के साथ अद्यतन तालिका
- 2. jQuery - स्लाइडअप के अंत तक प्रतीक्षा करें()
- 3. डेलीमीटर के अंत तक कैसे हटाएं?
- 4. का चयन करें SUM() से (चयन (SELECT())
- 5. तालिका के अंत में कुल मानों को क्रमबद्ध करें
- 6. कैसे से बचने के लिए अपरिभाषित ऑफसेट
- 7. वेक्टर/मैट्रिक्स के अंत तक सुरुचिपूर्ण इंडेक्सिंग
- 8. लाइन के अंत तक (वर्तमान पत्र से अनन्य)
- 9. दिए गए 'एक्स' (प्रारंभ) ऑफसेट से 'y' (समापन) ऑफसेट
- 10. LaTeX के साथ तालिका के अंत में कैप्शन के साथ एक आत्मनिर्भर तालिका-वातावरण कैसे बनाएं?
- 11. SUM() SELECT
- 12. स्ट्रिंग के अंत से कुछ वर्णों को कैसे प्रतिस्थापित करें?
- 13. ऑफसेट प्राप्त करना तालिका में तत्व का टॉप
- 14. लिंक से एसक्यूएल समूह द्वारा और Sum
- 15. शुरुआत से अंत तक एक चर पारित करना - पेपैल
- 16. धुरी के साथ numpy sum
- 17. CouchDB SUM और GROUP के समतुल्य देखें
- 18. Django SUM क्वेरी?
- 19. स्ट्रिंग के अंत तक किसी निश्चित चरित्र से कुछ भी हटाने के लिए preg_replace का उपयोग कैसे करें?
- 20. लिंककैड प्रत्येक तालिका के अंत में एक एस जोड़ता है
- 21. मल्टीलाइन टेक्स्ट बॉक्स में पाठ के अंत तक लगातार कैसे स्क्रॉल करें?
- 22. जीवन के वेब एप्लिकेशन के अंत का निर्धारण कैसे करें?
- 23. MySQL में एक SUM() द्वारा ऑर्डर कैसे करें?
- 24. मैं पाठ फ़ाइल के अंत तक स्ट्रिंग से कैसे मिलान करूं?
- 25. उपनाम कॉलम पर कुल फ़ंक्शन SUM की गणना कैसे करें?
- 26. संकलन समय पर ऑफसेट करें
- 27. आईओएस - टाइमज़ोन के लिए कच्चे ऑफसेट कैसे प्राप्त करें?
- 28. Drupal से Django तक पोर्ट कैसे करें?
- 29. Django अंत उपयोगकर्ता परिभाषित फ़ील्ड, कैसे करें?
- 30. jQuery: स्थिति() और ऑफसेट()
इसे स्वीकार करना, क्योंकि यह मेरे प्रश्न को सबसे सीधे संबोधित करता है, लेकिन 'ORDER BY' के साथ मेरी समस्या को इंगित करने के लिए @Quassnoi को धन्यवाद (और +1), – keithjgrant
इस उत्तर का प्रारूप शून्य परिणाम देगा यदि SUM या कुछ अन्य एकत्रीकरण समारोह का उपयोग किया गया था। ऐसा इसलिए है क्योंकि, जैसा कि @Quassnoi नीचे बताता है, एसयूएम को एक सबक्वायरी के रिकॉर्ड # 95 - LARGE_NUMBER पर लागू किया जाएगा जो केवल एक परिणाम लौटाता है। Quassnoi नीचे मूल प्रश्न का सही जवाब देता है। – akgill