基于IF条件,MySQL JOIN来自两个表中的一个

时间:2017-07-18 02:23:26

标签: mysql sql join sql-view

SELECT Table1.Filter, Table1.Condition, Combined.Data FROM Table1
LEFT JOIN 
(SELECT Key, Data FROM IF(Table1.Filter, Table2, Table3))) AS Combined 
ON Table1.Condition = Combined.Key

我想创建一个MySQL视图,其中显示Table1的所有列,以及来自Table2Table3的列,具体取决于Table1.Filter上的字段。

一个简单的解决方案是LEFT JOIN Table2Table3,而NULL列不适用。有没有办法避免创建2列? 我不能UNION Table2Table3,因为它们可能包含相同的Key

1 个答案:

答案 0 :(得分:2)

以下应该做你想做的事:

SELECT t1.Filter, t1.Condition,
       COALESCE(t2.Data, t3.Data) as Data
FROM Table1 t1 LEFT JOIN 
     Table2 t2
     ON t1.Filter AND t2.Key = t1.Condition LEFT JOIN
     Table3 t3
     ON (NOT t1.Filter) AND t3.key = t1.condition;

您无法在FROM中选择条件。但是,您可以在ON条件下拥有条件。