当前位置: 首页 > 知识库问答 >
问题:

Spark SQL:对出现在另一个表(两列)中的记录进行筛选?

顾嘉良
2023-03-14

我有几个表,我希望根据另一个表中是否存在两列来筛选其中一个表中的行。每个表上的数据如下

表2:每个用户哈希与用户ID唯一相关联

表3:每个商品名称与商品编号唯一相关联

表4

在我的示例中,ID2和Number2都在表1中,但不在同一行上,所以我想从表4中筛选此行。

我希望问题足够清楚。提前感谢!

共有1个答案

蒋健
2023-03-14

您可以执行semi join:

select * 
from table4 
left semi join (
    select * from table1 
    join table2 using (`User Hash`) 
    join table3 using (`Article Name`)
) using (`User ID`, `Article Number`)

+-------+--------------+----------+
|User ID|Article Number|OtherField|
+-------+--------------+----------+
|    ID1|       Number1|     Misc1|
|    ID3|       Number3|     Misc3|
+-------+--------------+----------+

或者等效地,存在:

select * 
from table4 
where exists (
    select * from table1 
    join table2 using (`User Hash`) 
    join table3 using (`Article Name`) 
    where `User ID` = table4.`User ID` 
    and `Article Number` = table4.`Article Number`
)
 类似资料:
  • 我有3个表,需要按以下方式提取记录 只选择Table_A中常见的记录,忽略Table_B和Table_C中不常见的记录,最终结果将不会重复。 尝试了方法1:将Table_A与Table_B内部连接,然后将Table_A与Table_C分离,最后进行了联合。 但我还是拿到了复制品。

  • 问题内容: 基本上,我需要获取在StaffOnGrade中出现2次以上的CampaignTitle的列表,并列出等级高于2的CampaignTitle,StaffNo WorksOn表: StaffOnGrade表: 以下两个查询实现了各个部分,但我需要将其作为一个查询结果集返回。 希望这是有道理的! 问题答案:

  • 问题内容: 我在Python中有两个列表 我想对第一个列表进行排序,并使用结果对第二个列表进行排序。 换句话说,结果应为: 我知道如何分别对每个列表进行排序,但是如何使用对另一个列表进行排序所产生的索引排列来对一个列表进行排列呢? 问题答案: 施瓦兹变换

  • 我看到过其他几个类似于这个问题的问题,但我还没有找到任何解决我的问题的方法。

  • 问题内容: 我有一个这样的字符串列表: 使用Y中的值对X进行排序以获取以下输出的最短方法是什么? 具有相同“键”的元素的顺序无关紧要。我可以求助于for结构的使用,但我好奇是否有更短的方法。有什么建议么? 问题答案: 最短代码 例: 一般来说 解释: 两个。 创建一个新的,list基于zip使用排序sorted()。 使用列表推导从排序的,压缩的中提取每对的第一个元素list。

  • 我有这样一个情况: 我必须对进行排序,该列表还包含的ID,排序必须为: null