Mysql 如何从具有不同列的多个表中获取组合列值

Mysql 如何从具有不同列的多个表中获取组合列值,mysql,Mysql,我正在尝试合并三个表中的多个列。我可以使用UNIONALL关键字,但我觉得我使用的这个查询可能不是最有效的 例如: 我使用的查询 有没有一种方法可以在不使用两次内部选择查询的情况下获得相同的结果?有人能给我一个有效的查询吗 这是你的电话号码 预期产出(act='a1'中所有三个表的金额) 只需使用显式的连接: SELECT act, stk, amt FROM tbl1 UNION ALL SELECT t1.act as amt, t1.stk, t2.amt from tbl2 join

我正在尝试合并三个表中的多个列。我可以使用UNIONALL关键字,但我觉得我使用的这个查询可能不是最有效的

例如:

我使用的查询

有没有一种方法可以在不使用两次内部选择查询的情况下获得相同的结果?有人能给我一个有效的查询吗

这是你的电话号码

预期产出(act='a1'中所有三个表的金额)


只需使用显式的
连接

SELECT act, stk, amt
FROM tbl1

UNION ALL

SELECT t1.act as amt, t1.stk, t2.amt
from tbl2 join
     tbl1
     on tbl2.tid = tbl1.id;

为什么不直接加入表格呢?你的相关子查询有什么特别的原因吗???我不太习惯连接,这是我能写的最好的:)这取决于数据,但你应该能够连接表。。。我认为你甚至不需要工会。但我在打电话,所以我需要一个预期的输出,以确保一切工作非常感谢!如果我必须只获取那些包含act='a1'的行,那么您将向一个子查询或两个子查询添加一个
where
子句。where子句
where act='a1'
对于第二个表不起作用,它仍然会获取所有记录
SELECT act,stk,amtFROM tbl1
UNION ALL
SELECT 
(select act from tbl1 where tbl2.tid = tbl1.id) amt,
(select stk from tbl1 where tbl2.tid = tbl1.id) stk,
amt
from tbl2 
ACT     STK     AMT
a1      s1      50
a1      s2      25
a1      s1      15
a1      s1      5
a1      s1      15
a1      s1      10
a1      s1      15
SELECT act, stk, amt
FROM tbl1

UNION ALL

SELECT t1.act as amt, t1.stk, t2.amt
from tbl2 join
     tbl1
     on tbl2.tid = tbl1.id;