【发布时间】:2021-11-14 07:42:30
【问题描述】:
我想在 mysql 中加入来自同一数据库中不同表的一堆列。我遇到的问题是,并非所有值都写在同一个表中。 具体示例:在一个表中有 sid 列。根据此列中的值,我在此连接中需要的下一个值位于不同的表中。如果 sid 值等于 1,我必须加入表 2 以获得我想要的值,如果 sid 值不是 1,我必须加入表 3。 我在 mysql 中对 if - else 进行了一些研究,但我能找到的所有信息都是关于更改值以及它们在特定条件下如何显示的信息。 我希望工作流程在特定条件下发生变化。
无论执行哪个连接,生成的表都具有相同数量的列。我实际上并没有显示表 2 和表 3 中的任何数据。 descr 列存在于表 4 中。所有其他显示的列都存在于表 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 中完成此控制流的正确方法是什么?
【问题讨论】:
-
请限定列名,以便清楚它们的来源。
-
执行与适当表连接的单独查询,并将它们与
UNION结合起来。
标签: mysql sql mysql-workbench