hive查询,具有多个where-in子句,并具有逻辑连接类型

eimct9ow  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(567)

我有一个后端带有hivedb的web应用程序,用户从中选择4种不同类型的值,相关数据显示在ui上。
示例字段可以是:
项目id
子投资组合
项目状态
项目财务状况
用户可以为提到的字段选择不同的值(单个或多个)并请求数据。
我有一个带有多个where-in子句的单一配置单元查询,并结合and逻辑运算符来生成数据。
在用户为每个字段选择至少一个值之前,一切正常。但如果用户为3个字段选择筛选器并保留为空,则“”将传递给where条件中的in子句,并且不显示任何数据。因为没有一行符合条件。
如果某个字段没有被选中,我必须在in子句中传递一些信息,以获取该字段的所有数据,或者删除该字段的in子句。
在创建查询之前每次检查是否选择了一个值将涉及很多情况。
如果有人可以建议使用多个where-in的单个查询,并传递一些参数以获取未选择值的字段的所有行。
注意:我使用的是hivejdbc查询。

uxh89sit

uxh89sit1#

您可以使用以下结构来处理此问题:

where ($subporfolio is null or subportfolio = $subportfolio) and
      ($status is null or status = $status) and
      . . .

当然了 in null 可能是 = '' 取决于传递值的方式。

sf6xfgos

sf6xfgos2#

我发现创建动态查询更好。我遍历了所有的输入参数,并检查了它的值是否不为null或空,然后才将它添加到查询中的where-in子句中。

相关问题