我是一名 SQL Server 初学者,所以我一直在使用 MS Access 创建查询,然后针对 SQL Server 修改它们。
我创建了一个包含左连接的查询,它在 Access 中运行良好,但当我将 SQL 代码复制到 SQL Server 时,它不显示空值,我无法弄清楚原因。
我想显示所有属性值,无论它们是否包含值。谁能帮忙?代码如下:
SELECT DISTINCT
tbLease.LeaseTitle
, tbAttributeValue.AttributeTemplateDefinitionLinkID
, tbAttributeValue.Value
FROM
((((tbBusinessUnit
LEFT JOIN
tbAttributeValue ON tbBusinessUnit.BusinessUnitID = tbAttributeValue.ParentID)
INNER JOIN
tbBuildingLinkBusinessUnit ON tbBusinessUnit.BusinessUnitID = tbBuildingLinkBusinessUnit.BusinessUnitID)
INNER JOIN
tbBuilding ON tbBuildingLinkBusinessUnit.BuildingID = tbBuilding.BuildingID)
INNER JOIN
(tbUnitLocation
INNER JOIN
tbUnit ON tbUnitLocation.UnitID = tbUnit.UnitID)
ON tbBuilding.BuildingID = tbUnitLocation.LocationID)
INNER JOIN
tbLease ON tbUnit.UnitID = tbLease.UnitID
WHERE
(((tbAttributeValue.AttributeTemplateDefinitionLinkID) = 30
Or (tbAttributeValue.AttributeTemplateDefinitionLinkID) = 31
Or (tbAttributeValue.AttributeTemplateDefinitionLinkID) = 32));
最佳答案
没有一些例子很难说出你想要什么,但你可能想要这个:
WHERE coalesce(tbAttributeValue.AttributeTemplateDefinitionLinkID,30) in (30,31,32);
这将为您提供 AttributeTemplateDefinitionLinkID
为 null 的项目
(也就是说它没有加入左连接)或者是这 3 个值之一。
现在,如果您不使用左连接进行连接,由于 where 条件,它不会显示该行,因此您的左连接与内部连接相同。
关于sql - 左加入不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294807/