在一个mysql sql查询中使用两个数据库

时间:2013-07-03 06:22:25

标签: mysql

我想在一个sql查询中使用2个数据库。我将在一个数据库中运行查询,另一个数据库应该通过将db name添加到表前来选择,但我想要动态选择第二个数据库名称。 例如:

SELECT * FROM db1.contact WHERE id 
IN (SELECT contact_id FROM (REPLACE(DATABASE(),1,2)).email);

我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

您可以尝试执行以下操作:

SELECT * FROM db1.contact WHERE id IN (SELECT contact_id FROM db2.email);

对于第二台服务器:

SELECT * FROM db21.contact WHERE id IN (SELECT contact_id FROM db1.email);

但无法动态选择数据库,因为SQL的 DATABASE 部分不支持任何类型的函数(如REPLACE,IF等)

答案 1 :(得分:0)

我能看到的唯一方法是动态SQL;

SELECT @dbname := 'db2';
SELECT @query := CONCAT('SELECT * FROM db1.contact WHERE id IN ',
                        '(SELECT contact_id FROM ', @dbname, '.email);');

PREPARE stmt FROM @query;
EXECUTE stmt;