我需要按几个条件筛选我的任务表。
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)
有没有可能避免条件的重复?构建此查询的最佳方法是什么?
p、 进一步说,这个查询将和多个联接一起使用,在这个查询的两个部分中很难复制联接和条件。
2条答案
按热度按时间vc9ivgsu1#
使用
case
中的表达式where
一般不鼓励使用这个条款。一个原因是它使查询更难优化。第二个原因是,将这些条件限制为布尔逻辑对人们来说更容易理解。所以,我建议:
或:
xzv2uavs2#
试试这个