2017-07-18 100 views
0
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列兩個表的一個連接。MySQL的基於IF條件

一個簡單的解決方案是LEFT JOINTable2Table3,NULL在不適用的列上。有沒有辦法避免創建2列?我不能UNIONTable2Table3,因爲它們可能包含相同的Key

回答

0

以下應該做你想要什麼:

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條件中擁有條件。