具有多个带有 AND 类型逻辑连接的 where IN 子句的配置单元查询
Posted
技术标签:
【中文标题】具有多个带有 AND 类型逻辑连接的 where IN 子句的配置单元查询【英文标题】:hive query with multiple where IN clause with AND type logical connection 【发布时间】:2017-12-07 15:06:57 【问题描述】:我有一个后端带有 hive db 的 Web 应用程序,用户可以从中选择 4 种不同类型的值,相关数据会显示在 UI 上。
示例字段可能是:
项目 ID 子组合 项目状态 项目财务状况用户可以为提到的字段(单个或多个)选择不同的值并请求数据。
我有一个带有多个 where IN 子句并结合 AND 逻辑运算符生成数据的配置单元查询。
在用户为每个字段选择至少一个值之前,一切都很好。但是,如果用户为 3 个字段选择过滤器并将其留空,则 '' 将传递给条件中的 IN 子句,并且不显示任何数据。因为没有任何行符合条件。
如果一个字段没有被选中,我必须在 IN 子句中传递一些东西来获取该字段的所有数据或删除该字段的 IN 子句。
在创建查询之前每次检查是否选择了一个值将涉及很多情况。
如果有人可以建议一个带有多个 where IN 的查询,并传递一些参数以获取未选择任何值的字段的所有行。
注意:我使用的是 hive JDBC 查询。
【问题讨论】:
就目前而言,这个问题太宽泛了..尝试显示一些示例数据和预期结果以及您的尝试。 【参考方案1】:您可以使用以下结构处理此问题:
where ($subporfolio is null or subportfolio = $subportfolio) and
($status is null or status = $status) and
. . .
当然,in null
可能是 = ''
,具体取决于您传递值的方式。
【讨论】:
感谢您的回答戈登。如果您不介意,请帮助我了解如何在 hive 中使用构造。可以举个例子。【参考方案2】:我发现创建动态查询会更好。 我遍历所有输入参数并检查其值是否不为空或不为空,然后将其添加到查询的 where IN 子句中。
【讨论】:
以上是关于具有多个带有 AND 类型逻辑连接的 where IN 子句的配置单元查询的主要内容,如果未能解决你的问题,请参考以下文章