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

Databricks中多列使用IN运算符报错,该语法是否合法?

Databricks SQL多列IN语法可行性说明

这种多列组合匹配的IN语法在Databricks SQL中是可行的,但你遇到的报错是因为旧版本Databricks会把(column1,column2,column3)解析为命名结构体(named_struct)而非行构造器,导致解析失败。

解决方法有两种:

  • 显式使用ROW()构造行值(兼容绝大多数Databricks版本):
select *
from table_1
where ROW(column1, column2, column3) IN (
  ROW('foo','bar','2023-01-01'),
  ROW('one','two','2023-01-02')
)
  • 使用简化语法(仅支持Databricks Runtime 11.0及以上版本):
    如果你的集群是较新版本,直接保留原写法也能正常运行,新版本已经支持省略ROW()的行构造器语法。

另外,也可以用等价的多条件OR写法替代,但多列IN的写法更简洁:

select *
from table_1
where (column1 = 'foo' and column2 = 'bar' and column3 = '2023-01-01')
   or (column1 = 'one' and column2 = 'two' and column3 = '2023-01-02')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:07:38