假设我有表 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