我有一个视图,我在其中通过一系列左联接将外键值替换为其参考值。

这些表之一可以与我加入的多对一关系

Example.exampleid = SLA.exampleId.


我的问题是SLA表有一个列,其中SLa.type可以是AB,然后SLA.value将有一个数字。这会在我的视图中创建重复行,其中唯一的区别是SLA.typeSLA.value

我希望它返回SLA.typeA的这些列,并且在表中找不到给定example.exampleId的内容时仍不中断视图

例如。我的视图选择查询简洁明了:

Select Example.exampleId, SLA.type, SLA.value
FROM Example
   LEFT JOIN SLA ON Example.exampleId = SLA.exampleId
WHERE SLA.type <> "B" OR SLA.type IS NULL or SLA.value IS NULL


example.exampleId在SLA表中将永远只有两行,一行用于类型A,另一行用于类型B。

任何想法将不胜感激!

最佳答案

SLA.type <> "B"条件移到join子句中,因为它仅在这种情况下才适用于右侧列。在weher子句中,条件适用于整个数据集:

Select Example.exampleId, SLA.type, SLA.value
FROM Example
   LEFT JOIN SLA ON Example.exampleId = SLA.exampleId and SLA.type <> "B"


虽然,我会考虑使用SLA.type = "A",以防万一您将引入新的SLA类型。

07-27 16:43