यह समाधान एक संचयी योग का प्रदर्शन करेगा, जब योग 1000 से अधिक हो जाएगा:
SELECT NULL AS users_count, NULL AS total
FROM dual
WHERE (@total := 0)
UNION
SELECT users_count, @total := @total + users_count AS total
FROM messages_queue
WHERE @total < 1000;
इसका मतलब है कि अगर आपके पास दो मान हैं, जैसे कि, 800, तो कुल योग 1600 होगा। पहला चयन केवल @total
को इनिशियलाइज़ करना है। चर।
यदि आप राशि को 1000 से अधिक होने से रोकना चाहते हैं, उन मामलों के अलावा जहां एक पंक्ति का मान 1000 से अधिक है, तो मुझे लगता है कि यह काम करता है, हालांकि आपको इसे कुछ कठोर परीक्षण के अधीन करने की आवश्यकता होगी:
SELECT NULL AS users_count, NULL AS total, NULL AS found
FROM dual
WHERE (@total := 0 OR @found := 0)
UNION
SELECT users_count, @total AS total, @found := 1 AS found
FROM messages_queue
WHERE (@total := @total + users_count)
AND @total < 1000
UNION
SELECT users_count, users_count AS total, 0 AS found
FROM messages_queue
WHERE IF(@found = 0, @found := 1, 0);