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

如何在Databricks Spark SQL中向IN子句传入数组实现关联查询?

解决数组列与单字段匹配的SQL查询问题

你的原SQL存在两个问题:

  • 错误引用了表B的b.animals,实际应该使用表A的a.animals
  • IN操作符无法直接处理数组类型,需要用数组专用的匹配逻辑

下面是两种可行的修正方案:

方案一:使用ANY操作符(适合PostgreSQL等支持数组的数据库)

WITH table_a AS (
SELECT 
id, 
array('cat','dog') AS animals
) 

SELECT b.*
FROM table_b b 
JOIN table_a a 
  ON a.id = b.id 
  AND b.animal_type = ANY(a.animals)

= ANY(a.animals)会直接检查b.animal_type是否等于数组中的任意元素,写法简洁高效。

方案二:展开数组后关联(兼容性更强)

如果你的数据库不支持数组直接匹配,可以先把数组拆成多行再做关联:

WITH table_a AS (
SELECT 
id, 
array('cat','dog') AS animals
) 

SELECT b.*
FROM table_b b 
JOIN (
  SELECT id, unnest(animals) AS animal
  FROM table_a
) a 
  ON a.id = b.id 
  AND a.animal = b.animal_type

这里用unnest把数组展开为单值行,再和表B做常规的等值关联,适配多数数据库类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:38:12