MySQL 根据 IF 条件从两个 table 之一加入

MySQL JOIN from one of the two table based on IF condition

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 中的一列,具体取决于 [=] 上的字段16=].

一个简单的解决方案是 LEFT JOIN Table2Table3,在不适用的列上添加 NULL。有没有办法避免创建 2 列? 我不能 UNION Table2Table3 因为它们可能包含相同的 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 条件中设置条件。