我有两个表,表一有两列a和b,表二有两列c和d。对于表一中的每一行,如果我可以在表二中找到一行,那么a = c and substring(b, 1, 3) = substring(d, 1, 3),
然后我将这一行保留在表一中。最后,我想计算表一中有多少行。我尝试在下面写这样的查询,但我不确定它是否正确?
SELECT COUNT(1)
FROM
(SELECT One.a
FROM One
LEFT SEMI JOIN Two
ON One.a = Two.b
AND One.ds = '2018-02-27'
AND Two.ds = '2018-02-27'
AND One.c IS NOT NULL
AND Two.d IS NOT NULL
AND SUBSTR(One.c, 1, 3) = SUBSTR(Two.d, 1, 3)
GROUP BY One.a) subquery
由于我没有数据示例,我发现很难判断您的代码是否正确。但是,正如我所看到的那样,你想根据两个条件加入,对吗?
前段时间我看到了这个:Hive Query- Joining two tables on three joining conditions with OR operator
我认为他们有一些不同的选择。我对你所拥有的内容提出了类似的问题,并且发现答案非常有用!