【问题标题】:clickhouse array queryclickhouse 数组查询
【发布时间】:2018-12-20 09:10:14
【问题描述】:

我在数据类型为Array(Int32) 的表中有列。要查询数组中的项目,我使用以下查询。

select count(id) from user where has(array,2);

如何查询数组中的多个元素? clickhouse里有in查询吗?

我想要如下所述的查询

select count(id) from user where has(array,2) or has(array,3)

【问题讨论】:

    标签: mysql sql clickhouse


    【解决方案1】:

    hasAll function 检查一个数组是否是另一个数组的子集。

    【讨论】:

      【解决方案2】:

      我从未使用过 clickhouse,但我认为有一种解决方法可以检查数组是否包含给定的所有条目。

      select count(id) 
      from user 
      where arrayUniq(arrayConcat(array, [2, 3])) = arrayUniq(array)
      

      如果您想检查是否有一个或多个条目,我想应该是这样的:

      select count(id) 
      from user 
      where arrayUniq(arrayConcat(array, [2, 3])) < length(arrayConcat(array, [2, 3]))
      

      【讨论】:

      • 谢谢。我认为第二个查询应该是&lt;=
      • arrayUniq 返回长度,无需再次调用length函数
      • 如果等于,则表示该数组不包含任何我们不想要的搜索值
      • 这个解决方案远非最佳。按照 Ivan Blinkov 的建议使用 hasAny 函数。
      • 当然.. 在文档中找不到这些功能.. 如果它们存在,那么必须使用它们而不是我的建议
      猜你喜欢
      • 2020-03-23
      • 2020-05-19
      • 2019-07-14
      • 2020-10-29
      • 1970-01-01
      • 2020-01-04
      • 2021-12-05
      • 2021-05-15
      • 2017-08-19
      相关资源
      最近更新 更多