SQL Select-如果值出现在另一个表中,则标记



更新:有人知道如何在Pyspark中做到这一点吗?

正在尝试处理SPARKSQL查询。我有两个表,如果a.id中的值出现在b.id中,则需要创建一列来标记;案例当a.ID在(从b中选择b.ID(然后"出现">,提及"不匹配的输入"a",应为EOF";"。我不能使用"JOIN",因为a.id在b.id中多次出现,并且表被搞砸了。在此处输入图像描述表a:

[ID][Description]

112毫米

121 NN

123 DD

表b:

[ID][Action]

112 A

112 B

112 C

131 A

SELECT a.ID,
CASE WHEN a.ID IN (SELECT b.ID FROM b) THEN 'appear' 
ELSE 'no'
END AS Flag 
FROM a

试试这个。它不那么重了。

SELECT  a.ID
,ISNULL((
SELECT  'appear'
FROM    b
WHERE   a.ID = b.ID
), 'no'
) AS Flag
FROM    a;

以下是使用OUTER APPLY回答相同问题的另一种方法。

SELECT  a.ID
,CASE
WHEN hc.HitCount > 0 THEN 'appear'
ELSE 'no'
END AS Flag
FROM    a
OUTER APPLY (
SELECT  COUNT(1) AS HitCount
FROM    b
WHERE   a.ID = b.ID
) AS hc;

相关内容

  • 没有找到相关文章

最新更新