0

我使用 Avatica calcite 作为 JDBC 驱动程序来查询 Druid DB。我发现“IN”语法后面不能跟超过 19 个元素。例如

SELECT * FROM ds1 WHERE city_id IN 
    (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19) 

这行得通,但这一个错误:

SELECT * FROM ds1 WHERE city_id IN 
    (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20) 

如何使用超过 19 个元素的“IN”语法?

4

1 回答 1

1

这不起作用的原因在https://github.com/druid-io/druid/issues/4203中有描述。它应该在 Calcite 1.14 发布后在 Druid SQL 中修复,这将让我们更多地自定义它的行为。

在那之前,请尝试@melpomene 建议的解决方法,它应该可以工作:

SELECT * FROM ds1 WHERE
     city_id IN (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)
  OR city_id IN (20,21,22)
于 2017-09-25T22:56:23.380 回答