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
所有列,并且无论从Table2
或Table3
根据电场上Table1.Filter
列两个表的一个连接。MySQL的基于IF条件
一个简单的解决方案是LEFT JOIN
都Table2
和Table3
,NULL
在不适用的列上。有没有办法避免创建2列?我不能UNION
Table2
和Table3
,因为它们可能包含相同的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
条件中拥有条件。