我有一个这样的REST端点:www.icecreamstore.com/stock?brand=hershey&flavour=vanilla
现在,brand
和flavour
都是可选的。
因此,以下内容也完全有效: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);
这假设
brand
和flavour
永远不会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/