根据左连接列值在视图中返回一行

时间:2016-06-02 08:53:51

标签: mysql sql join view

我有一个视图,我将通过一系列左连接替换外键值及其参考值。

其中一个表格可以有多对一的关系,我加入

SLa.type

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

我希望它返回Aexample.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

时,仍然不会中断视图

E.g。我的视图以简洁的缩写形式选择查询:

<object-to-string-transformer>

example.exampleId在SLA表中只有两行,一行用于类型A,一行用于类型B.

任何想法都将受到赞赏!

1 个答案:

答案 0 :(得分:0)

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类型。