我发现很多职位对where子句中coniditonal过滤,但他们似乎都基于关闭使用相同的值,如:SQL条件过滤
WHERE (o.OrderID = @orderid OR @orderid IS NULL)
我需要做一些稍微不同,我需要删除的过滤器,并将其值在另一个值完全基地,所以像:
select *
from tableA
where 1 = 1
case when a = 1 then
and b in (select b from tableB)
else
-- do nothing
end
我知道上面是不允许的,我刚写的一个例子是什么我正在努力。任何人都有任何想法做到这一点的好方法吗?我知道我可以使用if语句并重复查询,但它是一个很大的,我试图避免这一点。
感谢
您正在使用什么RDBMS?答案依赖于此。是的,可以在WHERE子句中使用'CASE'语句,但语法依赖于SQL的风格。 – Wil