SELECT中没有JOIN的子查询?

时间:2018-04-13 16:20:27

标签: sql hive subquery

我知道Hive不支持这个

element.myR = "X", "XY"

Hive不能在SELECT中执行SELECT(SELECT中的子查询)。

但是,为了一些限制,我不能在FROM子句之后做JOIN。是否有"创意"这样做的方法?我正在考虑解析并传递一个静态列表"来自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 的单独查询。但这可能会达到数千人。

1 个答案:

答案 0 :(得分:2)

如果您可以使用select进行连接,则可以使用左连接并检查空值

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