如何解决如何在 IN 子句中提供数组 presto
select *
from Table1
where NUMid in (select array_agg(NUMid)
from Table2
where email = 'xyz@gmail.com')
我的目的是从 table2 中获取电子邮件值等于 xyz@gmail.com 的所有 NUMid 的列表,并使用这些 NUMid 列表从 Table1 中进行查询。
但我收到以下错误:
对于IN表达式,子查询的值和结果必须是相同的类型:bigint vs array(bigint)
解决方法
如果我理解正确,您甚至不需要在这里调用 ARRAY_AGG
,只需使用标准的 WHERE IN (...)
构造:
SELECT *
FROM Table1
WHERE NUMid IN (SELECT NUMid FROM Table2 WHERE email = 'xyz@gmail.com');
您也可以使用存在逻辑来表达这一点,以提高性能:
SELECT *
FROM Table1 t1
WHERE EXISTS (SELECT 1 FROM Table2 t2
WHERE t2.NUMid = t1.NUMid AND t2.email = 'xyz@gmail.com');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。