You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Phantom DSL中为ScyllaDB的WHERE子句使用OR条件?

解决Phantom DSL中ScyllaDB查询OR条件的语法问题

你遇到的错误是因为Phantom DSL的SelectQuery对象并没有提供直接链式调用的.or()方法,之前的写法不符合库的API规范。

正确写法示例

方式一:在单个where中直接用or连接条件

db.object
  .select
  .where(_.businessEmail eqs "abc@gmail.com" or _.homeEmail eqs "abc@gmail.com" or _.additionalEmail eqs "abc@gmail.com")
  .fetch()

方式二:拆分条件后组合(适合条件较多的场景)

// 先定义组合好的条件
val emailCondition = _.businessEmail eqs "abc@gmail.com" or _.homeEmail eqs "abc@gmail.com" or _.additionalEmail eqs "abc@gmail.com"

// 传入where执行查询
db.object
  .select
  .where(emailCondition)
  .fetch()

额外注意事项

ScyllaDB(基于CQL)对OR条件有使用限制:

  • 所有通过OR连接的条件,必须包含至少一个分区键列(如果表定义了分区键),否则会触发全表扫描,性能极差甚至无法执行
  • 如果场景允许,也可以考虑用IN替代OR,但IN同样需要遵循分区键相关的使用规则

内容的提问来源于stack exchange,提问作者Zaryab Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:52:46