我發現很多職位對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