经过一番研究,看来存储过程是最好的方法,但不确定这是否是最好的解决方案。我认为我想实现的目标有很多,但我会尽力简化我的问题。
我有一堆客户数据库,都是完全相同的结构,而且都有相同的表名(我们继承的遗留问题,正在积极重组,但在那之前我需要采取这种方法)。
我想做的是在所有这些数据库中循环,然后做一些类似的事情。
SELECT * FROM my_db_a.table1
SELECT * FROM my_db_b.table1
SELECT * FROM my_db_c.table1
我知道在视图中调用存储过程是不可能的。我一直在寻找关于在mysql中进行for循环而不需要使用存储过程的信息,但看起来这不是一个好方法,甚至不可能实现我试图实现的目标--所以有点不确定如何继续下去并找到这个问题的最有效的解决方案。
先谢谢大家的帮助。
假设你可以从同一个SQL连接访问所有的数据库,你可以只用一个 UNION ALL
彼此 SELECT
. 这种方法可以让你在一个单一的结果集中从所有的数据库表中获取数据。
SELECT * FROM my_db_a.table1
UNION ALL
SELECT * FROM my_db_b.table1
UNION ALL
SELECT * FROM my_db_c.table1