select中的子查询没有连接到配置单元?

uqdfh47h  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(296)

我知道Hive不支持这个

SELECT (CASE WHEN table1.id in (SELECT table1.id
                                from table1,table2
                                where table1.id = table2.id and table2.company like '%My Company%')
            THEN table1.email
            ELSE regexp_replace(table1.email, substr(table1.email, 1), 'XXXX') 
       END) as  email, table1.id
FROM table1

配置单元无法在select中执行select(select中的子查询)。
但有一些限制,我不能在from子句之后加入。有没有“创造性”的方法?我在考虑解析并传递一个来自 SELECT table1.id from table1,table2 where table1.id = table2.id and table2.company like '%My Company%' 在另一个查询中。但这个数字可能会高达数千。

sgtfey8w

sgtfey8w1#

如果可以对联接使用select,则可以使用left联接并检查null值

SELECT case when t1.id is null 
               then regexp_replace(table1.email, substr(table1.email, 1), 'XXXX') 
               else table1.email 
        end
       , table1.id 
    FROM table1 
    left join (
        SELECT table1.id 
        from table1,table2 
        where table1.id = table2.id 
        and table2.company like '%My Company%'
      ) t on  table1.id = t.id

相关问题