【问题标题】:How can I run the CQL query "(col1, col2) IN ((1,2), (3,4))" with GoCQLX?如何使用 GoCQLX 运行 CQL 查询 \"(col1, col2) IN ((1,2), (3,4))\"?
【发布时间】:2022-07-01 11:39:41
【问题描述】:

好吧,标题可能信息量不大,抱歉。

如果我使用

qb.Select(...)
  .Where(
    qb.Eq(\"part_key_col1\"),
    qb.Eq(\"part_key_col1\"), 
    qb.In(\"clust_key_col1\"),
    qb.In(\"clust_key_col2\")
  )

,查询构建器构造:

SELECT ...
  WHERE part_key_col1 = ?
  AND part_key_col1 = ?
  AND clust_key_col1 IN ?
  AND clust_key_col2 in ?

现在,如果我传递 2 个 clust_key_col1(例如 \"hello\" 和 \"world\")和 2 个 clust_key_col2 值(\"foo\" 和 \"bar\"),它会构建:

SELECT ...
  WHERE part_key_col1 = ?
  AND part_key_col1 = ?
  AND clust_key_col1 IN (\"hello\", \"world\")
  AND clust_key_col2 in (\"foo\", \"bar\")

这导致 4 种可能的匹配:

hello foo
hello bar
world foo
world bar

我应该如何使用 gocqlx qb 来构造这个查询:WHERE (part_key_col1, part_key_col2) IN ((\"hello\", \"foo\"), (\"world\", \"bar\"))?我想传递任意数量的元素。

    标签: go cassandra cql scylla gocqlx


    【解决方案1】:

    在快速研究中,GoCQLX 查询构建器在使用 IN() 运算符时似乎不支持复杂的嵌套。

    您在 Scylla 的团队中记录一张票会更好。我已经标记了您的问题,因此希望有人会看到它。你也可以create an issue against the GoCQLX repository。干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 2018-10-13
      相关资源
      最近更新 更多