我需要按几种条件过滤任务表。

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

10-05 23:09
查看更多