我需要使用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中使用这种方法,我的选择是什么?
答案 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;