我正在尝试在Hive查询语言中使用NOT IN
关键字。这似乎给了我一个错误:
SELECT Name
FROM names_in_countries
WHERE Country = 'Mexico'
AND Name NOT IN (
SELECT Name
FROM names_in_countries
WHERE Country <> 'Mexico')
答案 0 :(得分:2)
我不知道Hive查询语言。根据我在此处阅读的内容:Hive Queries on Tables,以下脚本可能有效。试一试。
脚本:
SELECT name
FROM mytable
GROUP BY name
HAVING AVG((CASE WHEN country = 'Mexico' THEN 1 ELSE 0 END) * 1.) >= 1
答案 1 :(得分:1)
这样的事可能有用。
SELECT t1.Name
FROM names_in_countries t1
LEFT OUTER JOIN (SELECT Name,
Country
FROM names_in_countries
WHERE Country <> 'Mexico') t2
ON ( t1.Name = t2.Name )
WHERE t1.Country = 'Mexico'
AND t2.Country IS NULL
在t2上添加country <> 'Mexico'
作为子选择是至关重要的,因为从执行LEFT OUTER JOIN后从t2检索的记录会发生变化。如果没有来自t1的记录的相应条目,它们将显示为NULL。