【问题标题】:MySQL JOIN from one of the two table based on IF conditionMySQL JOIN 从基于 IF 条件的两个表之一
【发布时间】:2017-12-22 17:05:49
【问题描述】:
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 上的字段。

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

【问题讨论】:

    标签: mysql sql join sql-view


    【解决方案1】:

    以下应该做你想要的:

    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 条件中设置条件。

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 2018-09-26
      • 2012-07-13
      • 1970-01-01
      相关资源
      最近更新 更多