左联接后列中的 TRUE 或 FALSE



假设我有表 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 列。 但是,有时由于左连接,表 B 中行中的数据为 NULL。

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

这行得通吗?

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 可以为空,您可以将其更改为如下所示的内容:

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)
SELECT * FROM A 
LEFT OUTER JOIN B ON A.X = B.X

相关内容

  • 没有找到相关文章

最新更新