簡體   English   中英

MySQL:基於if / case語句聯接不同的表

[英]MySQL: Joining different tables based on an if/case statement

我有一張帶有兩組ID(dec_id和rec_id)的表。 如果在表1中找到dec_id,則需要離開該表。 如果不是-離開聯接表2。 第二列也是如此。 我還需要知道在哪個表中找到了哪個ID。

這是表1的抽象結構:

dec_id     rec_id     
-----------------
11         16
23         24
15         31

表2和表3對於所有意圖和目的都是相同的(除了實際數據):

id        name         data1         data2
------------------------------------------
11        a            x             p
41        b            y             q
55        c            z             r

和邏輯(抽象):

IF (dec_id IS IN Table1) {
    LEFT JOIN Table1 on (dec_id = table1.id);
    LEFT JOIN Table2 on (rec_id = table2.id);
    FLAG = 1;
} ELSE {
    LEFT JOIN Table1 on (rec_id = table1.id);
    LEFT JOIN Table2 on (dec_id = table2.id);
    FLAG = 0;
}
LEFT JOIN Table3, Table4, ...

我知道可以在PHP中使用多個查詢來實現結果,但是為了效率起見,我想盡可能避免使用它。 不幸的是,我的SQL知識使我失敗了。

提前致謝!

您是否正在尋找這樣的東西?

SELECT COALESCE(t2.id, t3.id) id,
       (t2.id IS NOT NULL) flag,
       COALESCE(t2.name, t3.name) name,
       COALESCE(t2.data1, t3.data1) data1
  FROM table1 t1 LEFT JOIN table2 t2
    ON t1.dec_id = t2.id LEFT JOIN table3 t3
    ON t1.rec_id = t3.id

這是SQLFiddle演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM