0

假设我有表 A 和表 B。A
有 5 列:F、G、H、I 和 X。B
有 1 列:X。X
在 A 和 B 中具有相同的值。

假设我运行以下命令。

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

结果数据集有 6 列。但是,有时由于 LEFT JOIN,表 B 中的行中的数据为 NULL。

如何从 A 返回 * 但在结果集中有一个额外的(第六)列,如果连接确实找到匹配项,则显示“是”,如果没有找到匹配项,则显示“否”?

4

2 回答 2

6

这行得通吗?

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

如果 AX 和/或 BX 可以为空,您可以将其更改为以下内容:

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)
于 2012-12-12T04:35:06.830 回答
0

选择 * 从 AX = BX 上的左外连接 B

于 2012-12-12T04:36:15.910 回答