我需要按几种条件过滤任务表。
select * from tasks where initialPrice > 20 where status = 3
但是,如果此任务属于userId = 1(例如)-我需要选择其他附加状态(status = 1和status = 5)。
所以我的变体是:
select * from tasks where initialPrice > 20 and status = 3 or (status = 1 or status = 5 and userId = 5 and initialPrice > 20)
是否可以避免条件重复,并且构建此查询的最佳方法是什么?
附言此外,此查询将与多个联接一起使用,并且很难在该查询的两个部分中重复联接和条件。
最佳答案
尝试这个
select * from tasks
where initialPrice > 20
and case when status = 3 Then 1 when status in (1,5) and userId = 5 Then 1 else 0 end = 1