लगभग सटीक उसी प्रश्न का उत्तर यहां दिया गया . आधार यह है कि विचाराधीन ग्राहक के लिए रनिंग टोटल के रूप में कार्य करने के लिए आपको एक और कॉलम की आवश्यकता होगी...
मैंने आपके परिणामों की तरह तालिका और नकली डेटा बनाया और आपके सटीक परिणामों के साथ आया ... मुद्दा यह था कि MySQL प्रति पंक्ति दो बार मानदंड लागू कर रहा था और समझ में नहीं आया कि कैसे या क्यों ... मुझे इसकी एक बग पर संदेह है, लेकिन उसका वर्णन नहीं कर सकता। किसी भी तरह, मेरे पास एक फिक्स है जो आधार के रूप में एक आंतरिक "प्रीक्वेरी" को मजबूर करता है, और उस से सभी रिकॉर्ड @SQLVars के साथ वापस कर देता है और फिर उस से WHERE क्लॉज लागू करता है ...
select properSummed.*
from
( select
o.orderid,
o.price,
@RunningTotal := @RunningTotal + o.price as UnpaidSoFar
from
orders o,
(select @RunningTotal := 0 ) sqlvars
where o.ownerid = 1
and o.paymentstatus = 'unpaid' ) properSummed
where
properSummed.UnpaidSoFar <= 50