SQL Server:如果左连接没有结果,则返回占位符/文本[重复]

Posted

技术标签:

【中文标题】SQL Server:如果左连接没有结果,则返回占位符/文本[重复]【英文标题】:SQL Server: return placeholder / text if Left Join has no result [duplicate] 【发布时间】:2014-10-10 14:38:06 【问题描述】:

我在自引用表上使用左连接来查看项目是否具有 parentID,然后获取父项的相应 itemName。 parentID 可以是整数或 NULL。

我的查询按预期工作。 我只是想知道是否有一种方法可以返回占位符/文本(例如“---”),否则它只会为查询的这个特定部分返回任何内容。也许通过使用 Case 语句?

有问题的部分是E.itemNameD.itemName,因为两者都只有在D.parentIDD.parentID 时才可用。 A.parentID 不为 NULL。

我的程序(缩短):

SELECT      A.itemName,
            B.lastUpdate,
            B.modTime,
            B.modBy,
            E.itemName AS levelMain,
            D.itemName AS levelSub
FROM        MOC_Links A
LEFT JOIN   MOC_Log B
ON          B.itemID = A.itemID
LEFT JOIN   MOC_Links D
ON          D.itemID = A.parentID
LEFT JOIN   MOC_Links E
ON          E.itemID = D.parentID
WHERE       A.itemName LIKE '%'+@searchTerm+'%'
ORDER BY    itemName, levelMain
FOR XML PATH('results'), ELEMENTS, TYPE, ROOT('ranks')

【问题讨论】:

【参考方案1】:

我想你在找coalesce():

coalesce(E.itemName, '---') as levelMain
coalesce(D.itemName, '---') as levelSub

【讨论】:

完美,就是这样 - 非常感谢,戈登!我会尽快接受。 :)【参考方案2】:

您可以使用 Isnull,例如ISNULL(E.itemName, '----')

【讨论】:

也谢谢你。

以上是关于SQL Server:如果左连接没有结果,则返回占位符/文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章

sql left join - 如果没有结果,则返回默认值

MS Access / SQL Server JOIN返回左表中的所有值,如果右侧缺少则返回零

SQL-JOIN链接

sql所有连接解释

SQL Server 2008 - 性能慢查询

SQL连接(join)