在 Presto 中,如何检查我通过子查询获取的列表中是不是存在数组中的元素
Posted
技术标签:
【中文标题】在 Presto 中,如何检查我通过子查询获取的列表中是不是存在数组中的元素【英文标题】:In Presto how can I check if an element in an array is present in a list I acquire via a subquery在 Presto 中,如何检查我通过子查询获取的列表中是否存在数组中的元素 【发布时间】:2021-09-20 07:16:54 【问题描述】:这是一个 Presto SQL 问题。
我有一个表 Test
,其中包含一个名为 mitigations
的数组字段。
如何检查该数组中是否有任何元素存在于子查询中
(select distinct(ID) from other_table)
?
【问题讨论】:
【参考方案1】:使用ANY
函数检查数组中是否有元素
考虑以下示例
CREATE TABLE sal_emp (
name text,
pay_by_quarter integer[]
);
INSERT INTO sal_emp
VALUES
('Bill','40000, 10000, 30000, 10000'),
('Jack','10000, 50000, 20000, 10000');
我们要检查数组中是否有 10,000 个数字
SELECT * FROM sal_emp
where 10000 = ANY (pay_by_quarter);
上面的查询换个方式
SELECT name FROM sal_emp
WHERE pay_by_quarter IN
(SELECT pay_by_quarter FROM sal_emp WHERE 10000 = ANY (pay_by_quarter));
Declaration of Array Types
Array Functions and Operators
【讨论】:
我在将这个想法应用到我的情况时遇到了麻烦。我的清单来自另一张桌子。如果我可以将该列表转换为数组,我可以执行“arrays_overlap”函数。以上是关于在 Presto 中,如何检查我通过子查询获取的列表中是不是存在数组中的元素的主要内容,如果未能解决你的问题,请参考以下文章