我需要在一个数组中按列左键联接两个表。表一型号:结构id-字符串ips-字符串数组表2型号:ip-字符串主机名-字符串我想要的结果是:id、ip、主机名(如果存在)需要匹配第一个表中的数组中与第二个表中的ip对应的所有ip。我不知道如何开始,任何想法或参考是欢迎的。
h7appiyu1#
您可以在第二个表上使用explode选项,然后按如下所示执行连接。假设您有一个带有字符串名称数组的表1,表2有一个字符串名称数组创建表1(id字符串,ips数组);创建表2(ip字符串,主机名int);然后可以使用分解自定义项在表1上创建侧视图。从表1中选择id,ip侧视图分解(ips)ep作为ip;这将为数组中的每个值将单行分解为多行。请阅读侧视图文档以获取更多帮助。最后的连接查询是这样的。
SELECT t1.id,t1.ip, t2.hostname FROM (select id,ip from table_1 LATERAL VIEW explode(ips) ep AS ip) AS t1 LEFT JOIN table_2 AS t2 ON (t2.ip=t1.ip);
1条答案
按热度按时间h7appiyu1#
您可以在第二个表上使用explode选项,然后按如下所示执行连接。
假设您有一个带有字符串名称数组的表1,表2有一个字符串名称数组
创建表1(id字符串,ips数组);创建表2(ip字符串,主机名int);
然后可以使用分解自定义项在表1上创建侧视图。
从表1中选择id,ip侧视图分解(ips)ep作为ip;
这将为数组中的每个值将单行分解为多行。请阅读侧视图文档以获取更多帮助。
最后的连接查询是这样的。