如何在NOT IN条件下避免使用笛卡尔积?

时间:2017-09-08 15:49:10

标签: hive hiveql

我的查询如下:

SELECT * FROM a WHERE a.col NOT IN (SELECT col FROM B)

当我执行查询时,我收到以下错误:

  

FAILED:SemanticException [错误10052]:在严格模式下,不允许使用笛卡尔积。如果您确实要执行该操作,请设置hive.mapred.mode = nonstrict

我的查询中的笛卡儿产品在哪里?如何避免此错误?

2 个答案:

答案 0 :(得分:0)

您可以完全绕开而不使用'except'

SELECT * FROM a WHERE a.col except (SELECT * FROM a WHERE a.col IN (SELECT col FROM B))

答案 1 :(得分:0)

您可以使用左联接来完成任务

select a.* from a left outer join b on a.col = b.col where.col is NULL
相关问题