我有一个连接子查询的查询.如果子查询返回null,我希望它被忽略,我希望查询的其余部分正常工作.
目前我有类似的东西:
SELECT a, b, c, d
FROM tblOne
JOIN tblTwo ON tblOne.a = tblTwo.a --this works fine
JOIN
(SELECT a
FROM tblThree) ON tblThree.a = tblOne.a
Run Code Online (Sandbox Code Playgroud)
问题是如果tblThree.a为null,则整个查询返回null.所以,如果tblThree.a不为null,我只想使用子查询.
我可以用CASE或COALESCE或其他方式做些什么吗?请给出代码示例.
使用LEFT OUTER JOIN而不是INNER JOIN.这将返回查询其余部分的所有行,即使没有tblThree返回匹配的行也是如此.在这种情况下,列tblThree将全部NULL.
使用您的查询(虽然我已为派生表添加了必需的别名):
SELECT a, b, c, d
FROM tblOne
INNER JOIN tblTwo ON tblOne.a = tblTwo.a
LEFT OUTER JOIN
(
SELECT a, e, f
FROM tblThree
) tblThree ON tblThree.a = tblOne.a
Run Code Online (Sandbox Code Playgroud)
请注意,正如@ 491243所指出的,派生表子查询在这里并没有多大意义.您也很可能a在SELECT子句中有一个不明确的列.我猜这只是你真实查询的推断.