Gần chính xác câu hỏi tương tự được trả lời tại đây . Tiền đề là bạn sẽ cần một cột khác để hoạt động như một tổng số đang chạy cho khách hàng được đề cập ...
Tôi đã tạo bảng và dữ liệu mô phỏng chính xác như kết quả của bạn và đưa ra kết quả chính xác của BẠN ... Vấn đề là bằng cách nào đó MySQL đang áp dụng tiêu chí TWICE cho mỗi hàng và không hiểu bằng cách nào hoặc tại sao ... Tôi MẠNH nghi ngờ nó là lỗi, nhưng không thể mô tả nó. Nhưng dù sao, tôi CÓ một bản sửa lỗi buộc một "PreQuery" bên trong làm cơ sở và trả lại TẤT CẢ các bản ghi từ đó bằng @SQLVars và sau đó áp dụng mệnh đề WHERE từ đó ...
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