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

如何在Athena预准备语句的IN子句中传入多个值

Athena预准备语句中IN子句的多值参数处理方案

问题原因

你之前的尝试失败有两个核心原因:

  • 直接传入多个独立值会被识别为对应多个占位符,和原语句的2个占位符不匹配;
  • 用array_join将数组转成字符串后,IN子句实际是在匹配'NY, CA'这个单一字符串,而非两个独立的城市值,自然查不到结果。

正确解决方案

方案1:使用IN UNNEST(?)

定义预准备语句:

PREPARE ps AS
SELECT locationId,
       location
FROM location_type
WHERE city IN UNNEST(?)
  AND userId = ?

执行语句:

EXECUTE ps using ARRAY['NY', 'CA'], '12345';

UNNEST会把传入的数组拆分成独立的行,让IN子句能正确匹配多个城市值。

方案2:使用array_contains

定义预准备语句:

PREPARE ps AS
SELECT locationId,
       location
FROM location_type
WHERE array_contains(?, city)
  AND userId = ?

执行语句:

EXECUTE ps using ARRAY['NY', 'CA'], '12345';

array_contains会检查city值是否存在于传入的数组中,实现和IN子句相同的筛选效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:01:05