select id from
(select id, if(not(@sum > 0.9), 1, 0) mark, (@sum:[email protected]+value) as sum
from trade cross join (select @sum:=0) s
where price=2 order by value asc) t
where mark =1
आंतरिक क्वेरी संचयी योग और अतिरिक्त फ़ील्ड की गणना करती है mark
, जो बराबर है one
जबकि योग कम है और 0.9 से अधिक होने पर शून्य में बदल जाता है। चूंकि यह एक कदम बाद काम कर रहा है, यह पहली पंक्ति को इकट्ठा करता है जहां योग सीमा से ऊपर है।
आंतरिक चयन का परिणाम
id mark sum
4 1 0.30000001192092896
2 1 0.800000011920929
3 1 1.699999988079071
अब बाहरी क्वेरी में आपको केवल mark
. वाली पंक्तियों का चयन करना होगा बराबर 1. और इसका परिणाम 4,2,3
. होता है