选择不同的数据库进行连接 - mysql

时间:2016-06-08 18:34:45

标签: mysql sql database stored-procedures

我正在尝试使用sql脚本从主表中检索信息,并将其与来自另一个数据库(同一服务器)中的表的数据连接起来。困难的部分是,对于“主”表中的每一行,我必须加入的数据位于不同的数据库中。

我不确定如何继续这样做,我认为唯一的办法就是做一些循环。我是对的吗?

以下是我的两个表格的样子:

Main table:  
    main_id  
    database_name

other tables:  
    other_id  
    other_name

我希望结果如下:

main_id  
database_name  
other_name  

编辑:我正在尝试编写存储过程

2 个答案:

答案 0 :(得分:1)

如果你想在mysql中这样做,你可以(或者更确切地说:必须)使用动态sql来生成一个包含可变代码(如数据库名称)的sql语句。

尝试

set @stmt = 
  (select group_concat(concat(
                 'select * from main_table m ',
                 'join ',database_name,'.other_table o ', 
                 'on m.database_name = ''',database_name,''' ',
                 'and m.main_id = o.other_id ') 
                 SEPARATOR ' union all ')
   from (select database_name 
         from main_table 
         group by database_name) as dbdata);

prepare stmt from @stmt;
execute stmt;

这将首先获得所有不同的database_name,然后生成将main_table中的条目与正确数据库连接的代码。

它不会检查是否所有数据库都存在,如果没有,则整个语句将失败,但您当然可以事先在information_schema中检查数据库。

答案 1 :(得分:-1)

您可以使用" Union"选项。

或者你可以使用temprary表;从选择中插入并稍后显示结果。

此致