假设我发出如下查询:
SELECT a.x, b.y FROM a LEFT JOIN b ON b.id = a.id
我还想知道来自b
的行是否实际加入,或者 NULL
提供了占位符LEFT
JOIN
。我想我可以确定它在结果中比较a.id
和b.id
的值,但有没有办法在查询本身中执行此操作?
即。我想要像
这样的东西SELECT a.x, b.y, b_is_actually_joined FROM a LEFT JOIN b ON b.id = a.id
其中b_is_actually_joined
列中的值为1或0(例如)。
答案 0 :(得分:3)
只需检查NULL b.id:
SELECT a.x, b.y, b.id IS NOT NULL AS b_is_actually_joined
FROM a
LEFT JOIN b ON b.id = a.id
对于Oracle SQL,您可以使用NVL2功能:
SELECT a.id, b.*, NVL2(b.id, 1, 0) AS b_is_actually_joined
FROM a
LEFT JOIN b ON b.id = a.id
答案 1 :(得分:1)
这应该适用于Sql Server Ms:
select CAST((coalesce(b.id, 0)) as bit) as b_is_actually_joined FROM a
LEFT JOIN b ON b.id = a.id
我不知道这个
的标准SQL解决方案