我有一个这样的REST端点:
www.icecreamstore.com/stock?brand=hershey&flavour=vanilla
现在,
brandflavour都是可选的。
因此,以下内容也完全有效:
www.icecreamstore.com/stock?flavour=vanilla
www.icecreamstore.com/stock?brand=hershey
www.icecreamstore.com/stock
这些API映射到SQL查询:
select count(*) from stock where brand=? and flavour=?
是否可以使用单个查询,而不是为每个请求参数组合编写单独的查询。
或者,
是否可以编写这样的查询:
select count(*) from stock where brand=* and flavour=*
注意:在没有请求参数的情况下,我正在使用LIKE管理column_name LIKE '%%'。但是如果列不存储string类型的值呢。

最佳答案

对于您的特定情况,最简单的方法可能是:

select count(*)
from stock
where brand = coalesce(?, brand) and flavour = coalesce(?, flavour);

这假设brandflavour永远不会NULL
如果它们可以NULL,则可以使用is not distinct from
select count(*)
from stock
where brand is not distinct from coalesce(?, brand) and
      flavour is not distinct from coalesce(?, flavour);

关于sql - 从表中选择column_name,其中column_name = all_values,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42806937/

10-15 18:32