如何使用多个创建单个查询,其中列和值是可选的

时间:2017-09-30 11:44:20

标签: filter where-clause

例如,

select * from a id = @id,日期介于@ date1和@ date2之间 当我通过@ id = 1 @ date1 = '09 / 29/17'和@ date2 = '09 / 30/17' 那么输出是正确的

当我传递@ id = 0(表示没有在表中找到id)@ date1 = '09 / 29/17'和@ date2 = '09 / 30/17'然后输出来自日期和忽略id列< / p>

意味着我希望过滤器像购物网站

1 个答案:

答案 0 :(得分:0)

实现此目的的方法是在ID列上使用OR,使SQL看起来像:

SELECT *
FROM a
WHERE (@id=0 OR id=@id)
  AND date BETWEEN @date1 AND @date2

您需要小心并注意使用这种方法的方法是,根据您的DBMS,您可能最终会遇到针对第一个执行路径所采用的优化执行的情况。如果它是一张非常大的桌子,最终可能会导致问题。