提问者:小点点

存储过程中来自n数据库MySQL select语句


经过一番挖掘,看起来存储过程是这里的方法,但不确定这是否是最好的解决方案。 我认为有相当多的事情,我正在努力实现,但将尽我最大的努力,简化我的问题。

我有一大堆客户机数据库,它们的结构完全相同,表名也相同(我们继承的遗留问题正在积极地进行重构,但在此之前我需要采用这种方法)。

我要做的是循环遍历所有这些DB,并执行如下操作:

SELECT * FROM my_db_a.table1

SELECT * FROM my_db_b.table1

SELECT * FROM my_db_c.table1

我知道从视图中调用存储过程是不可能的。 我想在不需要使用存储过程的情况下在mysql中寻找关于循环的信息,但看起来这不是一个好的方法,甚至不可能实现我想要实现的目标--所以有点不确定如何继续进行并找到解决这个问题的最有效的解决方案。

提前感谢您的任何帮助。


共1个答案

匿名用户

假设您可以从同一个SQL连接访问所有数据库,那么您只需在每个select之间使用一个联合all即可。 这种方法允许您在一个结果集中从所有数据库表中获取数据。

SELECT * FROM my_db_a.table1
UNION ALL
SELECT * FROM my_db_b.table1
UNION ALL
SELECT * FROM my_db_c.table1