我正在使用大约5个不同的表做左外连接到我的表,我需要来自这5个表中只有一个的结果。
现在我知道我可以使用Coalesce来获得我想要的东西。但是,我想知道是否有一种方法可以告诉SQL一旦左连接点击就不能继续加入。但是,左外连接的顺序与我在查询中的顺序相同。
答案 0 :(得分:1)
您可以将LEFT JOIN
个查询转换为使用EXISTS
,这样效率更高。
这也许是你的意图;在条件满足时停止查找/加入。
答案 1 :(得分:0)
使用UNION ALL将5个单独的外部联接查询粘合在一起,并仅占用第一行。
答案 2 :(得分:0)
通常,除非您只需要一行和一列,否则您无法执行此操作。也许我应该说你可能能够找到一种钝的方法来做到这一点,但你应该不。
SQL Server通常不会一次访问单个行,因为这实际上非常低效,而是会尝试通过多次搜索来将其I / O堆叠到表中,甚至扫描整个表或者它的整个部分。在这种情况下,通常只是停下来考虑下一个单一记录是否过于缓慢。
所以我建议只使用COALESCE并让SQL Server对其进行排序。