我想显示两张桌子的记录。
它应该返回两个表中的所有匹配记录。
如果第一个表中存在记录而第二个表中没有记录,则它应该从第二个表中返回null并从第一个表中返回记录。 如果第二个表中存在记录而第一个表中没有记录,则它应该从第一个表中返回null并从第二个表中返回记录
我不想使用full outer join
,因为我想在索引视图中创建索引视图和外部(左,右,全)连接。
这种情况有没有更好的解决方案。
答案 0 :(得分:2)
对于带有“模拟外连接”的索引视图,有一个workaround。然而,这很可怕,我不会提倡它。
更好的解决方案是索引基础表并跳过整个视图。或者创建两个索引视图,并在调用视图的查询中执行outer join
。
另一个解决方案是不创建索引视图,而是创建一个实际的表(您可以使用触发器保持最新)并在其上放置索引。由于您无论如何都要实现视图,这可能是最佳解决方案。
很可能,索引视图(无论您选择哪种方法)都不会提供您正在寻找的(性能)结果(尽管您创建实际表的最后一种方法可能)。你能解释为什么你觉得在这种特殊情况下你需要一个索引视图吗?
顺便说一下,here是一个(简短)解释为什么索引视图不允许outer joins
。
答案 1 :(得分:0)
根据您的要求,您应该使用完全外部联接。如果你想要一个替代品......你可以使用下面的方法。
sel cola,colb,colc... from table a where colmnlist not in (select columnlist from table b )
union all
sel cola,colb,colc from table b where colmnlist not in (select columnlist from table a )
但是在这种情况下,为什么要避免完全外连接的任何特定原因。