ほぼ正確
私はあなたの結果とまったく同じようにテーブルとシミュレーションデータを作成し、あなたの正確な結果を思いつきました...問題はどういうわけかMySQLが行ごとに2回基準を適用していて、方法や理由を理解していなかったということでした...私はそのバグを強く疑っています、しかし、それを説明することはできません。とにかく、私は内部の「PreQuery」をベースとして強制し、@ 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