如何在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 因为我必须对左上连接的结果进行后续的左连接。
任何解决方案??????
答案 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.col2
或a.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