使用Hive SQL根据日期排除同一列中的值

时间:2016-07-22 08:39:42

标签: sql hive

我需要使用Hive从表中提取一组ID。我将从中提取数据的表按日期进行分区。我需要的是八天前出现在表格中的不同ID,但不代表过去七天的日期表格。我尝试过使用子查询:

SELECT DISTINCT id
FROM my_table
WHERE date = '2016-07-14'
  AND id NOT IN (
    SELECT DISTINCT id
    FROM my_table
    WHERE date BETWEEN '2016-07-15' AND '2016-07-21'
  );

但是,我收到一条错误消息,其中包含查询中不支持的语言功能(整个错误消息太长,无法在此处发布)。由于我不能在Hive SQL中使用这种方法,我的选择是什么?

1 个答案:

答案 0 :(得分:1)

使用LEFT JOIN可以完成相同的功能:

SELECT a.ID 
FROM
        (
        SELECT DISTINCT ID
        FROM my_table
        WHERE date = '2016-07-14'
        )a 
          LEFT JOIN (
                     SELECT DISTINCT ID
                     FROM my_table
                     WHERE date BETWEEN '2016-07-15' AND '2016-07-21'
                   ) s on a.ID=s.ID
WHERE s.ID IS NULL;