0

我正在尝试NOT IN在 Hive 查询语言中使用关键字。它似乎给了我一个错误:

SELECT Name
FROM names_in_countries
WHERE Country = 'Mexico'
AND Name NOT IN (
    SELECT Name
    FROM names_in_countries
    WHERE Country <> 'Mexico')

这是带有 SQL 答案的原始问题。

4

2 回答 2

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
于 2012-05-02T04:39:15.853 回答
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 

country <> 'Mexico'将on t2 添加为子选择至关重要,因为从 t2 检索到的记录在执行 LEFT OUTER JOIN 后会发生变化。如果 t1 中的记录没有对应的条目,它们将显示为 NULL。

于 2012-05-08T02:54:49.270 回答