条件左加入MySQL

时间:2014-11-11 05:33:58

标签: mysql join left-join

如何在LEFT JOIN中应用条件?

查询

SELECT a.col1, a.col2, a.col3, b.col2
FROM tab1 a 
LEFT JOIN tab2 b 
ON IF (a.col1='1', a.col2=b.col2, a.col3=b.col2) 

的解释。

如果a.col1 ='1',则将a.col2与表b列b.col2连接 其他 使用相同的表b b.col2

连接a.col3

我不喜欢做双LEFT JOIN, LEFT JOIN tab2 b ON a.col2 = b.col2 LEFT JOIN tab2 c ON a.col3 = c.col2 因为我必须对左上连接的结果进行后续的左连接。

任何解决方案??????

2 个答案:

答案 0 :(得分:0)

我不确定它是否适用于ON - 部分,但从逻辑上讲,我宁愿把它放在WHERE - 部分。

SELECT col1, col2, col3 
  FROM tab1 a 
  LEFT JOIN tab2 b
 WHERE (col1  = '1' AND a.col2 = b.col2)
    OR (col1 != '1' AND a.col3 = b.col2);

此外,由于这是LEFT JOIN,因此tab2中的所有值都可以为null,在这种情况下,a.col2 = b.col2a.col3 = b.col2都不会为真,因此实际上这与正常值相同JOIN

答案 1 :(得分:0)

SELECT a.col1,a.col2,b.col1,b.col2 
 FROM tab1 a 
  LEFT JOIN tab2 b on a.col1=b.col2
 left join tab3 c on b.col1=c.col3 

  left join work only when data must avail on left side table . so you have to chose table on that manner