MySQL的基于IF条件

问题描述:

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列两个表的一个连接。MySQL的基于IF条件

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

以下应该做你想要什么:

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条件中拥有条件。