假设我有表 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 返回 * 但在结果集中有一个额外的(第六)列,如果连接确实找到匹配项,则显示“是”,如果没有找到匹配项,则显示“否”?
假设我有表 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 返回 * 但在结果集中有一个额外的(第六)列,如果连接确实找到匹配项,则显示“是”,如果没有找到匹配项,则显示“否”?
这行得通吗?
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)
选择 * 从 AX = BX 上的左外连接 B