WHERE子句中的SQL IF语句

时间:2018-07-16 22:01:41

标签: sql if-statement

前面的伪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会在每一行强制执行所有条件。

2 个答案:

答案 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)