sql join告诉我其他表中是否存在ID

cap*_*gon 5 sql join

我有2张桌子:

 A      B
 --    ----
 ID    FKID
 --    ----
 1      3
 2      3   
 3      4
 4      4
Run Code Online (Sandbox Code Playgroud)

我需要一个select语句,它向我显示A的所有字段,告诉我表B是否有任何与该ID匹配的ID.

Desired Result
-----------
 ID | hasB
-----------
 1    no
 2    no    
 3    yes
 4    yes
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 11

在SQL Server中,这将是最有效的方式,而不是OUTER JOIN随后删除重复项DISTINCT.不确定postgres,你需要检查计划.

SELECT ID,
       CASE
         WHEN EXISTS (SELECT *
                      FROM   B
                      WHERE  B.FKID = A.ID) THEN 'yes'
         ELSE 'no'
       END AS hasB
FROM   A  
Run Code Online (Sandbox Code Playgroud)

  • +1:同意这个*可能*通过避免需要GROUP BY,DISTINCT并且不需要处理tableB中的所有重复行来避免服务器上的不必要负载. (3认同)