SQL加入第一个匹配的字段

时间:2011-03-11 11:17:34

标签: sql

我有一个查询以下列方式连接2个表。

Table1有一个字段(LinkTo)可能(或可能不)出现在表Table2(Link,Link1,Link2)的三个字段之一中。我需要尝试将LinkTo加入Link,然后加入Link1然后加入Link2。一旦我匹配一个(比如Link1),我应该停止尝试加入。

由于

标记

2 个答案:

答案 0 :(得分:2)

这可能就是你要找的东西。它按照您提到的字段顺序加入(已编辑以回答评论中的问题):

SELECT t1.*, t2.*,
    CASE WHEN (t1.LINKTO = t2.LINK) THEN 'LinkedWithLink' 
         WHEN (t1.LINKTO <> t2.LINK 
           AND t1.LINKTO = t2.LINK1) THEN 'LinkedWithLink1' 
         WHEN (t1.LINKTO <> t2.LINK1 
           AND t1.LINKTO <> t2.LINK1 
           AND t1.LINKTO = t2.LINK2) THEN 'LinkedWithLink2' END AS chosen_join
FROM TABLE1 t1 
[LEFT OUTER] JOIN TABLE2 t2
ON (t1.LINKTO = t2.LINK OR 
   (t1.LINKTO <> t2.LINK AND t1.LINKTO = t2.LINK1) OR
   (t1.LINKTO <> t2.LINK1 AND t1.LINKTO <> t2.LINK1 AND t1.LINKTO = t2.LINK2)

请注意,我不知道您是否需要LEFT OUTER加入......无论如何,您应该了解一个可能非常慢的执行计划......

答案 1 :(得分:0)

SELECT * 
FROM TABLE1 t1
  JOIN TABLE2 t2 ON (t1.LINKTO = t2.LINK OR 
                     t1.LINKTO = t2.LINK1 OR
                     t1.LINKTO = t2.LINK2)

只要其中一个陈述为真,其他陈述就不会检查