在 If 语句中执行 Join

Execute Join in If statement

我想在 mysql 的同一数据库中加入来自不同 table 的一堆列。我遇到的问题是,并非所有值都写在相同的 table 中。 具体示例:在一个 table 中有 sid 列。根据此列中的值,此连接中我需要的下一个值位于不同的 table 中。如果 sid 值等于 1 我必须加入 table 2 以获得我想要的值,如果 sid 值是任何值但是 1 我必须加入 table 3. 我对 mysql 中的 if - else 进行了一些研究,但我能找到的所有信息都是关于更改值以及它们在特定条件下如何显示的。 我希望工作流程在特定条件下发生变化。

无论执行哪个连接,生成的 table 都具有相同数量的列。我实际上没有显示来自 table 2 和 table 3 的任何数据。 descr 列存在于 table 4. 所有其他显示的列都存在in table 1.所以显示应该没有问题。

代码如下(灵感来自 python):

SELECT type, s_type, id, descr
FROM table1
IF sid = 1 THEN
    LEFT JOIN table2
    ON table1.sid = table2.sid
    LEFT JOIN table4
    ON table2.sid = table4.id_name
ELSE
    LEFT JOIN table3
    ON table1.sid = table3.svid
    LEFT JOIN table4
    ON table3.svid = table4.id_name
END IF;

在 mysql 中完成此控制流的正确方法是什么?

IF 无法在 SQL 中使用。如果我理解这个逻辑,你可以做这样的事情:

SELECT type, s_type, id, table4.descr
FROM table1 LEFT JOIN
     table2
     ON table1.sid = table2.sid AND table1.sid = 1 LEFT JOIN
     table3
     ON table1.sid = table3.svid AND table1.side <> 1 LEFT JOIN
     table4
     ON table4.id_name = COALESCE(table3.svid, table2.sid)

如果您的表很大,COALESCE() 可能会成为性能杀手。