2012-03-31 57 views
8

我想弄清楚连接几个表(cca 8)的查询。有一次,我需要加入两张桌子中的一张。因此,让我们调用结果直到这一点A.现在我想加入B或C.当我使用B时,我得到的结果更小,或者没有结果。如果加入后没有结果,我需要加入C代替。如果再加入其他加入

总结一下,如果(A,B)的交点为空,(A,C)交的结果就更大了,我只想加入C.

什么是平稳的方式来说这在MySQL?

回答

13

只能加入,如果先加入主键是空:

SELECT * 
FROM A 
LEFT JOIN B ON A.id = B.id 
LEFT JOIN C ON B.id IS NULL AND A.id = C.id 
+3

如果你想B或C的结果显示在您的选择列表中的相同的列,你可以使用像'SELECT COALESCE( B.id,C.id)as id,coalesce(B.othercolumnname,C.othercolumnname)as othercolumnname,...'。 – Asaph 2012-03-31 14:15:09

+0

伟大的一点,谢谢亚萨夫 – GavinCattell 2012-03-31 14:16:22

+0

谢谢你们,这正是我一直在寻找的想法 – 2012-03-31 14:18:22