0

我有 4 个表的查询。它需要通过将第一个表连接到第二个或第三个表来从第四个表返回值,具体取决于连接是否在第二个返回匹配项上。

这是我在网上查找后尝试的:

SELECT t1.field1, t4.field1   
FROM t1
LEFT JOIN t2 ON t1.field1 = t2.field1
LEFT JOIN t3 ON t1.field1 = t3.field1   
LEFT JOIN t4 ON COALESCE(t2.field1, t3.field1)

现在,它仅在从 t1 和 t2 之间的连接中进行匹配时返回第四个表中的值。

有没有办法做到这一点?提前感谢您的建议

4

2 回答 2

2

好吧,除了我认为复制/粘贴上的错误(它缺少最后一个连接条件的一部分)之外,您的查询应该可以工作:

SELECT t1.field1, t4.field1
FROM t1
LEFT JOIN t2 
    ON t1.field1 = t2.field1
LEFT JOIN t3 
    ON t1.field1 = t3.field1
LEFT JOIN t4 
    ON COALESCE(t2.field1, t3.field1) = t4.field1
于 2013-09-16T20:21:49.710 回答
1

似乎您的查询应该按原样工作(除了 Lamak 提到的缺少表达式),或者:

SELECT sub.field1, t4.field1
FROM (SELECT t1.field1, COALESCE(t2.field1, t3.field1) as field2
      FROM t1
      LEFT JOIN t2 
         ON t1.field1 = t2.field1
      LEFT JOIN t3 
         ON t1.field1 = t3.field1
     )sub
LEFT JOIN t4
  ON sub.field2 = t4.field1
于 2013-09-16T20:32:40.533 回答