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
的所有列,以及来自Table2
或Table3
的列,具体取决于Table1.Filter
上的字段。
一个简单的解决方案是LEFT JOIN
Table2
和Table3
,而NULL
列不适用。有没有办法避免创建2列?
我不能UNION
Table2
和Table3
,因为它们可能包含相同的Key
。
答案 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
条件下拥有条件。