手记

hive的巧用:查询两个表中不一样的数据

上个星期我在前辈的项目中发现了一个有趣的事情:
select a.* FROM A a left outer join B b on a.qq = b.qq
WHERE b.qq is null;
恩,很好。
WHERE b.qq is null;
.........
??
尼玛,你这不是查空得吗,查空的是干毛用啊?然后我就查前辈在数据库中存的sql语句,看看他是不是给我发错了。
查完之后我就嘿嘿了。前辈是谁啊,牛人大神啊,怎么可能会写错,然后我就问啊,这是什么意思啊,前辈说这是查A有B没有的数据。
什么意思呢?我也是想了好久才想明白,下面我来给大家说明一下,有错误建议指出~~
首先,我们先来看一下left join后是什么样的结果。我画了一张图,还请不要嫌弃。

现在又A\B两张表,用left join 关联后就会变成这样:

而在WHERE b.qq is null;后查的则是这个蓝框中的红框部分内的:

大家有没有了解呢~~~
如果有错误欢迎纠正,欢迎补充~~~

4人推荐
随时随地看视频
慕课网APP

热门评论

....我 我我  我去...这sql直接读的意思就是这个啊.....为毛要画图....还画的好难看....

    总结的很好,我也遇到了类似的需求,我用的not in ,耗时太久了,用你这个思路快多了,

查看全部评论