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.itemName
和D.itemName
,因为两者都只有在D.parentID
和D.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:如果左连接没有结果,则返回占位符/文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章