伪SQL:
SELECT *
FROM table
WHERE(if var1=a then var2 must=b)
AND (if var2=c then var3 must=d);
Run Code Online (Sandbox Code Playgroud)
该查询将返回与条件匹配的var1 = a和var2 = b的两行,以及var1!= a和var2!= c的所有行.
不使用IF,使用OR将忽略其中一个条件,并使用AND将强制执行每一行的所有条件.
您可以使用布尔逻辑执行此操作:
WHERE (var1 <> a or var2 = b) and
(var2 <> c or var3 = d);
Run Code Online (Sandbox Code Playgroud)
可能需要一点时间来考虑为什么这是等价的,但这在逻辑上是等价的(假设值不是NULL).