5加入?只需要其中一个的结果,但顺序很重要吗?

时间:2009-09-19 04:47:50

标签: sql sql-server tsql

我正在使用大约5个不同的表做左外连接到我的表,我需要来自这5个表中只有一个的结果。

现在我知道我可以使用Coalesce来获得我想要的东西。但是,我想知道是否有一种方法可以告诉SQL一旦左连接点击就不能继续加入。但是,左外连接的顺序与我在查询中的顺序相同。

3 个答案:

答案 0 :(得分:1)

您可以将LEFT JOIN个查询转换为使用EXISTS,这样效率更高。

这也许是你的意图;在条件满足时停止查找/加入。

答案 1 :(得分:0)

使用UNION ALL将5个单独的外部联接查询粘合在一起,并仅占用第一行。

答案 2 :(得分:0)

通常,除非您只需要一行和一列,否则您无法执行此操作。也许我应该说你可能能够找到一种钝的方法来做到这一点,但你应该

SQL Server通常不会一次访问单个行,因为这实际上非常低效,而是会尝试通过多次搜索来将其I / O堆叠到表中,甚至扫描整个表或者它的整个部分。在这种情况下,通常只是停下来考虑下一个单一记录是否过于缓慢。

所以我建议只使用COALESCE并让SQL Server对其进行排序。