我正在尝试使用sql脚本从主表中检索信息,并将其与来自另一个数据库(同一服务器)中的表的数据连接起来。困难的部分是,对于“主”表中的每一行,我必须加入的数据位于不同的数据库中。
我不确定如何继续这样做,我认为唯一的办法就是做一些循环。我是对的吗?
以下是我的两个表格的样子:
Main table:
main_id
database_name
other tables:
other_id
other_name
我希望结果如下:
main_id
database_name
other_name
编辑:我正在尝试编写存储过程
答案 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表;从选择中插入并稍后显示结果。
此致