LEFT JOIN后列中为TRUE为FALSE

时间:2012-12-12 04:31:12

标签: sql-server null left-join

假设我有表A和表B.
A有5列:F,G,H,I和X. B有1列:X。
A和B中的X具有相同的值 说我跑下面。

SELECT *
FROM A
LEFT JOIN B
ON A.X = B.X

结果数据集有6列。但是,有时由于LEFT JOIN,表B中行的数据为NULL。 我的最终目标是能够从A返回*但是在结果集中有一个额外的(第六)列,如果连接确实找到匹配则显示“是”,如果没有,则显示“否”。

非常感谢任何帮助!

谢谢,

马特

2 个答案:

答案 0 :(得分:5)

这有用吗?

SELECT 
  A.*,
  CASE
    WHEN B.X IS NULL THEN 'No'
    ELSE 'Yes'
  END AS BExists
FROM A 
LEFT JOIN B 
ON A.X = B.X

如果A.X和/或B.X可以为null,则可以将其更改为:

SELECT 
  A.*,
  CASE
    WHEN B.Id IS NULL THEN 'No'
    ELSE 'Yes'
  END AS BExists
FROM A 
LEFT JOIN B 
ON ISNULL(A.X,0) = ISNULL(B.X,0)

答案 1 :(得分:0)

SELECT * FROM A. 左外接点B接A.X = B.X