前面的伪SQL:
SELECT *
FROM table
WHERE(if var1=a then var2 must=b)
AND (if var2=c then var3 must=d);
该查询将返回匹配条件的var1 = a和var2 = b的所有行,以及var1!= a和var2!= c的所有行。
如果不使用IF,则使用OR会忽略条件之一,而使用AND会在每一行强制执行所有条件。
答案 0 :(得分:5)
您可以使用布尔逻辑来做到这一点:
WHERE (var1 <> a or var2 = b) and
(var2 <> c or var3 = d);
可能要花点时间考虑为什么这是等效的,但是在逻辑上是等效的(假设值不是NULL
)。
答案 1 :(得分:0)
符合条件的var1 = a和var2 = b以及所有行 哪里var1!= a,哪里var2!= c。
该语句本身类似于解决方案,如果您通过用OR
条件替换“以及”来进行转换。
Where (var1=a and var2=b)
OR (var1 <> a and var2 <> c)