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 View ,显示 Table1
的所有列,以及 Table2
或 Table3
中的列(具体取决于字段)在Table1.Filter
上。
一个简单的解决方案是对 Table2
和 Table3
进行LEFT JOIN
,并在对应的列上使用 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
条件中添加条件。
关于MySQL 基于 IF 条件从两个表之一进行 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45156459/