Мне нужно отфильтровать таблицу задач по нескольким условиям.
select * from tasks where initialPrice > 20 where status = 3
Но если эта задача принадлежит userId = 1 (например) - мне нужно выбрать его с другими дополнительными статусами (со статусом = 1 и статусом = 5).
Итак, мой вариант:
select * from tasks where initialPrice > 20 and status = 3 or (status = 1 or status = 5 and userId = 5 and initialPrice > 20)
Можно ли избежать дублирования условий и как лучше всего построить этот запрос?
P.S. В дальнейшем этот запрос будет использоваться с несколькими объединениями, и будет сложно дублировать объединения и условия в обеих частях этого запроса.