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



,例如从where id = @ID和 @date1和 @date2
中选择 * *当我传递 @ID = 1 @date1 = '09/29/17'and @date2 = '09/30/17'然后输出是正确的

当我传递 @ID = 0时(表示在表中找不到ID) @date1 = '09/29/17'and @date2 = '09/30/17',输出将在日期和忽略ID列

表示我想要像购物网站的过滤器

您这样做的方式将是在ID列上使用或在ID列上,使您的SQL看起来像:

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

您需要谨慎和意识到使用这种方法的事情是,根据您的DBMS,您可能最终会在对第一个执行路径进行优化的情况下最终会出现。如果这是一个很大的桌子,这可能最终会引起问题。