假设我有一张这样的table:
|id|userID|email |website |
--------------------------------------
|1 |user1 |user1@test.com|website.com|
|2 |user2 |user2@test.com|website.com|
|3 |user3 |user3@test.com|website.com|
|4 |user1 |user1@test.com|foo.com |
|5 |user2 |user2@test.com|foo.com |
我想得到website='website.com'所在的所有行,并在website='foo.com'所在的位置有一个与之匹配的userid的对应行
因此,在本例中,它将返回第1行和第2行。
有什么想法吗?
3条答案
按热度按时间bnlyeluc1#
有一种方法:
编辑:
也可以将其表示为联接:
如果知道没有重复项,则可以删除
distinct
.k4ymrczo2#
hive在使用子查询方面有点限制(它们只允许在
FROM
条款),所以我们必须解决这一点。好消息是我们真的不必担心(太多)进行大规模连接,因为,好吧,hadoop.:-)在表中查找匹配行的一种方法是简单地联接表本身。
注意,同一个表有两个版本,称为
left
以及right
我们分别从left
中有匹配行的right
具有相同用户ID的(JOIN
但网站是foo.com(and
条款)。希望有帮助。
o4tp2gmn3#
为了获得用户,你可以做
但如果你需要完整的一行,那就做吧