如何在 hive 查询中实现 LEFT/RIGHT OUTER JOIN 来替换 NOT IN?

艾曼

我在 Hive 中有两个表:empSrcempTrg

> select * from empSrc;
+---------------+--------------+-------------+--------------+--+
| empsrc.empid  | empsrc.dept  |  empsrc.ph  | empsrc.role  |
+---------------+--------------+-------------+--------------+--+
| e1            | dev          | 9999911111  | SE           |
| e2            | admin        | 6677889933  | SE           |
+---------------+--------------+-------------+--------------+--+
2 rows selected (0.872 seconds)
> select * from empTrg;
+---------------+--------------+-------------+--------------+--------------------+----------------+--+
| emptrg.empid  | emptrg.dept  |  emptrg.ph  | emptrg.role  | emptrg.dml_action  | emptrg.active  |
+---------------+--------------+-------------+--------------+--------------------+----------------+--+
| e1            | dev          | 9999911111  | SE           | I                  | A              |
+---------------+--------------+-------------+--------------+--------------------+----------------+--+

我想找到是在记录empSrc ,但缺少empTrg
我的查询工作正常:

select S.* from empSrc S
where S.empid not in (select T.empid from empTrg T);
+----------+---------+-------------+---------+--+
| s.empid  | s.dept  |    s.ph     | s.role  |
+----------+---------+-------------+---------+--+
| e2       | admin   | 6677889933  | SE      |
+----------+---------+-------------+---------+--+

问题是此查询正在生成交叉产品。我可以使用
任何等效的LEFT OUTER JOIN查询吗?
LEFT/RIGHT OUTER JOIN 对性能有帮助吗?
上面的场景是一个演示场景,在实际数据中我有~1200万条记录。

瓦姆西·帕巴拉

该查询select S.* from empSrc S where S.empid not in (select T.empid from empTrg T)实际上并不执行交叉联接。没有问题。

可以复制相同的逻辑 not exists

select s.*
from empSrc s 
where not exists (select 1 from empTrg t where t.empid = s.empid)

left join.

select s.*
from empSrc s
left join empTrg t on t.empid = s.empid
where t.empid is null --condition to check for non existent records

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何用等效的LEFT OUTER JOIN替换复杂的SQL MINUS查询

来自分类Dev

Hive SQL Full Outer Join with Where子句

来自分类Dev

如何在laravel中通过join查询来查看路由

来自分类Dev

如何在Hive SQL中获得与OUTER UNION CORR类似的结果?

来自分类Dev

如何在Django 1.9中表达sqlite LEFT OUTER JOIN?

来自分类Dev

如何在LINQ to SQL中编写右侧为null的LEFT OUTER JOIN?

来自分类Dev

如何在LINQ to SQL中编写右侧为null的LEFT OUTER JOIN?

来自分类Dev

如何在mySQL中为两个以上的表格式化FULL OUTER JOIN?

来自分类Dev

如何编写RIGHT OUTER JOIN和LEFT OUTER JOIN的组合

来自分类Dev

在 Oracle 中应用 OUTER JOIN

来自分类Dev

如何在Rails 4中使用Join而不是子查询来编写此ActiveRecord查询

来自分类Dev

使用Join in Hive更新查询

来自分类Dev

如何修改LEFT OUTER JOIN来为RIGHT边桌添加过滤器

来自分类Dev

使用子查询语法的LEFT OUTER JOIN

来自分类Dev

使用LEFT OUTER JOIN建立查询结果

来自分类Dev

Mysql Left OUTER JOIN与子查询(wordpress)

来自分类Dev

如何在mysql中实现join

来自分类Dev

如何在 Hive 查询中使用 row_number 来获取最新的用户登录信息?

来自分类Dev

MySQL查询-如何获取具有GROUP BY和WHERE条件的SUM并使用LEFT OUTER JOIN?

来自分类Dev

如何将 sql 查询转换为 linq LEFT OUTER JOIN

来自分类Dev

在MySQL中相当于OUTER JOIN

来自分类Dev

如何在 hive 查询中重用其他列的结果?

来自分类Dev

如何在Hive中使用递归查询

来自分类Dev

如何在bash中实现流程替换?

来自分类Dev

如何在Hive udf中传递Hive conf变量?

来自分类Dev

通过MAX挑战LEFT OUTER JOIN查询分组

来自分类Dev

使用COALESCE和LEFT OUTER JOIN的SQL查询

来自分类Dev

带有联合子查询的FULL OUTER JOIN

来自分类Dev

使用COALESCE和LEFT OUTER JOIN的SQL查询

Related 相关文章

  1. 1

    如何用等效的LEFT OUTER JOIN替换复杂的SQL MINUS查询

  2. 2

    Hive SQL Full Outer Join with Where子句

  3. 3

    如何在laravel中通过join查询来查看路由

  4. 4

    如何在Hive SQL中获得与OUTER UNION CORR类似的结果?

  5. 5

    如何在Django 1.9中表达sqlite LEFT OUTER JOIN?

  6. 6

    如何在LINQ to SQL中编写右侧为null的LEFT OUTER JOIN?

  7. 7

    如何在LINQ to SQL中编写右侧为null的LEFT OUTER JOIN?

  8. 8

    如何在mySQL中为两个以上的表格式化FULL OUTER JOIN?

  9. 9

    如何编写RIGHT OUTER JOIN和LEFT OUTER JOIN的组合

  10. 10

    在 Oracle 中应用 OUTER JOIN

  11. 11

    如何在Rails 4中使用Join而不是子查询来编写此ActiveRecord查询

  12. 12

    使用Join in Hive更新查询

  13. 13

    如何修改LEFT OUTER JOIN来为RIGHT边桌添加过滤器

  14. 14

    使用子查询语法的LEFT OUTER JOIN

  15. 15

    使用LEFT OUTER JOIN建立查询结果

  16. 16

    Mysql Left OUTER JOIN与子查询(wordpress)

  17. 17

    如何在mysql中实现join

  18. 18

    如何在 Hive 查询中使用 row_number 来获取最新的用户登录信息?

  19. 19

    MySQL查询-如何获取具有GROUP BY和WHERE条件的SUM并使用LEFT OUTER JOIN?

  20. 20

    如何将 sql 查询转换为 linq LEFT OUTER JOIN

  21. 21

    在MySQL中相当于OUTER JOIN

  22. 22

    如何在 hive 查询中重用其他列的结果?

  23. 23

    如何在Hive中使用递归查询

  24. 24

    如何在bash中实现流程替换?

  25. 25

    如何在Hive udf中传递Hive conf变量?

  26. 26

    通过MAX挑战LEFT OUTER JOIN查询分组

  27. 27

    使用COALESCE和LEFT OUTER JOIN的SQL查询

  28. 28

    带有联合子查询的FULL OUTER JOIN

  29. 29

    使用COALESCE和LEFT OUTER JOIN的SQL查询

热门标签

归档