Проблема в том, что вы выполняете сортировку со столбцом (amount
), который содержит повторяющиеся значения. Ваше предложение order by
не является детерминированным c, поэтому результаты нестабильны.
Простым решением является использование второго критерия сортировки, чтобы разорвать связи (он выглядит как user(id)
может это сделать):
select * -- better enumerate the columns here
from wallets w
inner join users u on u.id = w.user_id -- your "left join" is actually "inner join"
where u.role = 'tester' and w.amount > 0
order by w.amount, u.id -- here is the second sorting criteria
offset 0, limit 20