【问题标题】: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)?

【问题讨论】:

    标签: sql arrays presto


    【解决方案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”函数。
    猜你喜欢
    • 1970-01-01
    • 2020-12-14
    • 2021-01-31
    • 2021-12-17
    • 1970-01-01
    • 2011-08-02
    • 2018-01-10
    • 1970-01-01
    • 2014-09-11
    相关资源
    最近更新 更多