我可以加入 mysql 表动态吗?


Can I join mysql table dynamic

我试图编写此查询,但它不起作用

SELECT a.a1,a.a2, if(a.a3=1,b.b1,c.c1) as d1
FROM mytbl1 a
LEFT JOIN if(a.a3=1,mytbl2 b,mytbl3 c) on if(a.a3=1,a.a4=b.b4,a.a4=c.c4)

我想要的是,如果我的 a3 等于 1,那么我想加入 mytbl2,否则 mytbl3 它的列名和一切都不同

我可以使用一些修改或更好的方法来尝试过的东西吗?

您可以通过左连接两个表并将此条件添加到 join ON 子句来执行与此类似的操作。这将基本上始终连接两个表,但只有一个表值具有值,另一个具有空值:

SELECT * 
FROM mytbl1 a
LEFT JOIN mytbl2 b ON(a.a4=b.b4 AND a.a3 = 1)
LEFT JOIN mytbl3 c ON(a.a4=c.c4 AND a.a3 <> 1)